public void loadExtension(String extName, BasicLibraryService extension, boolean wrap) {
IRubyObject self = wrap ? TopSelfFactory.createTopSelf(this) : getTopSelf();
ThreadContext context = getCurrentContext();
try {
context.preExtensionLoad(self);
extension.basicLoad(this);
} catch (IOException ioe) {
throw newIOErrorFromException(ioe);
} catch (JumpException.ReturnJump rj) {