try {
Class[] descriptor = new Class[] {arg1, arg2, arg3};
if (c == null) {
Class[] signature = new Class[] { RubyKernel.IRUBY_OBJECT, arg1, arg2, arg3, Block.class };
Class ret = getReturnClass(method, signature);
ClassWriter cw = createCtor(mnamePath);
MethodVisitor mv = startCallS(cw);
loadArguments(mv, METHOD_ARGS_INDEX, 3, descriptor);
mv.visitVarInsn(ALOAD, 3);
mv.visitMethodInsn(INVOKESTATIC, typePath, method, sig(ret, signature));