static NativeMethod* create(VM* state, String* file_name = as<String>(Qnil), Module* module = as<Module>(Qnil), Symbol* method_name = as<Symbol>(Qnil), FunctorType functor = static_cast<GenericFunctor>(NULL), Fixnum* arity = as<Fixnum>(Qnil)) { NativeMethod* nmethod = state->new_object<NativeMethod>(G(nmethod)); nmethod->arity(state, arity); nmethod->file_name(state, file_name); nmethod->method_name(state, method_name); nmethod->module(state, module); nmethod->functor(state, MemoryPointer::create(state, reinterpret_cast<void*>(functor))); nmethod->set_executor(&NativeMethod::executor_implementation); nmethod->primitive(state, state->symbol("nativemethod_call")); nmethod->serial(state, Fixnum::from(0)); return nmethod; }