@Override
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) {
assert self instanceof RubyClass : "new defined on non-class";
RubyClass clazzSelf = (RubyClass) self;
IRubyObject newObj = clazzSelf.allocate();
RuntimeHelpers.invoke(context, newObj, "__jcreate!", args, block);
RuntimeHelpers.invoke(context, newObj, "initialize", args, block);
return newObj;
}