final class org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler implements org.jruby.javasupport.proxy.JavaProxyInvocationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler
  super_class: java.lang.Object
{
  private final org.jruby.Ruby runtime;
    descriptor: Lorg/jruby/Ruby;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.jruby.runtime.builtin.IRubyObject self;
    descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 226
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 227
            aload 0 /* this */
            aload 1 /* runtime */
            putfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            aload 0 /* this */
            aload 2 /* self */
            putfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.self:Lorg/jruby/runtime/builtin/IRubyObject;
         2: .line 228
            return
        end local 2 // org.jruby.runtime.builtin.IRubyObject self
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/jruby/javasupport/proxy/JavaProxyConstructor$MethodInvocationHandler;
            0    3     1  runtime  Lorg/jruby/Ruby;
            0    3     2     self  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  final
      self     final

  public org.jruby.runtime.builtin.IRubyObject getOrig();
    descriptor: ()Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
         0: .line 230
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.self:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/javasupport/proxy/JavaProxyConstructor$MethodInvocationHandler;

  public final org.jruby.Ruby getRuntime();
    descriptor: ()Lorg/jruby/Ruby;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
         0: .line 231
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            areturn
        end local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/javasupport/proxy/JavaProxyConstructor$MethodInvocationHandler;

  public java.lang.Object invoke(java.lang.Object, org.jruby.javasupport.proxy.JavaProxyMethod, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Lorg/jruby/javasupport/proxy/JavaProxyMethod;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
        start local 1 // java.lang.Object proxy
        start local 2 // org.jruby.javasupport.proxy.JavaProxyMethod proxyMethod
        start local 3 // java.lang.Object[] nargs
         0: .line 234
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.self:Lorg/jruby/runtime/builtin/IRubyObject;
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getMetaClass:()Lorg/jruby/RubyClass;
            astore 4 /* metaClass */
        start local 4 // org.jruby.RubyClass metaClass
         1: .line 235
            aload 2 /* proxyMethod */
            invokeinterface org.jruby.javasupport.proxy.JavaProxyMethod.getName:()Ljava/lang/String;
            astore 5 /* name */
        start local 5 // java.lang.String name
         2: .line 236
            aload 4 /* metaClass */
            aload 5 /* name */
            invokevirtual org.jruby.RubyClass.searchMethod:(Ljava/lang/String;)Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 6 /* method */
        start local 6 // org.jruby.internal.runtime.methods.DynamicMethod method
         3: .line 238
            aload 0 /* this */
            aload 6 /* method */
            aload 2 /* proxyMethod */
            aload 4 /* metaClass */
            aload 5 /* name */
            aload 3 /* nargs */
            invokevirtual org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.invokeRuby:(Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/javasupport/proxy/JavaProxyMethod;Lorg/jruby/RubyClass;Ljava/lang/String;[Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 7 /* result */
        start local 7 // org.jruby.runtime.builtin.IRubyObject result
         4: .line 240
            aload 2 /* proxyMethod */
            invokeinterface org.jruby.javasupport.proxy.JavaProxyMethod.getReturnType:()Ljava/lang/Class;
            astore 8 /* returnType */
        start local 8 // java.lang.Class returnType
         5: .line 241
            aload 8 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 6
            aconst_null
            goto 7
      StackMap locals: org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler java.lang.Object org.jruby.javasupport.proxy.JavaProxyMethod java.lang.Object[] org.jruby.RubyClass java.lang.String org.jruby.internal.runtime.methods.DynamicMethod org.jruby.runtime.builtin.IRubyObject java.lang.Class
      StackMap stack:
         6: aload 7 /* result */
            aload 8 /* returnType */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.toJava:(Ljava/lang/Class;)Ljava/lang/Object;
      StackMap locals:
      StackMap stack: java.lang.Object
         7: areturn
        end local 8 // java.lang.Class returnType
        end local 7 // org.jruby.runtime.builtin.IRubyObject result
        end local 6 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 5 // java.lang.String name
        end local 4 // org.jruby.RubyClass metaClass
        end local 3 // java.lang.Object[] nargs
        end local 2 // org.jruby.javasupport.proxy.JavaProxyMethod proxyMethod
        end local 1 // java.lang.Object proxy
        end local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/jruby/javasupport/proxy/JavaProxyConstructor$MethodInvocationHandler;
            0    8     1        proxy  Ljava/lang/Object;
            0    8     2  proxyMethod  Lorg/jruby/javasupport/proxy/JavaProxyMethod;
            0    8     3        nargs  [Ljava/lang/Object;
            1    8     4    metaClass  Lorg/jruby/RubyClass;
            2    8     5         name  Ljava/lang/String;
            3    8     6       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            4    8     7       result  Lorg/jruby/runtime/builtin/IRubyObject;
            5    8     8   returnType  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
             Name  Flags
      proxy        
      proxyMethod  
      nargs        

  private org.jruby.runtime.builtin.IRubyObject invokeRuby(org.jruby.internal.runtime.methods.DynamicMethod, org.jruby.javasupport.proxy.JavaProxyMethod, org.jruby.RubyClass, java.lang.String, java.lang.Object[]);
    descriptor: (Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/javasupport/proxy/JavaProxyMethod;Lorg/jruby/RubyClass;Ljava/lang/String;[Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=6
        start local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
        start local 1 // org.jruby.internal.runtime.methods.DynamicMethod method
        start local 2 // org.jruby.javasupport.proxy.JavaProxyMethod proxyMethod
        start local 3 // org.jruby.RubyClass metaClass
        start local 4 // java.lang.String name
        start local 5 // java.lang.Object[] nargs
         0: .line 246
            aload 5 /* nargs */
            arraylength
            anewarray org.jruby.runtime.builtin.IRubyObject
            astore 6 /* newArgs */
        start local 6 // org.jruby.runtime.builtin.IRubyObject[] newArgs
         1: .line 247
            aload 5 /* nargs */
            arraylength
            istore 7 /* i */
        start local 7 // int i
         2: goto 4
         3: .line 248
      StackMap locals: org.jruby.runtime.builtin.IRubyObject[] int
      StackMap stack:
            aload 6 /* newArgs */
            iload 7 /* i */
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            aload 5 /* nargs */
            iload 7 /* i */
            aaload
            invokestatic org.jruby.javasupport.JavaUtil.convertJavaToUsableRubyObject:(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
            aastore
         4: .line 247
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ -1
            iload 7 /* i */
            ifge 3
        end local 7 // int i
         5: .line 251
            aload 1 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getArity:()Lorg/jruby/runtime/Arity;
            invokevirtual org.jruby.runtime.Arity.getValue:()I
            istore 7 /* arity */
        start local 7 // int arity
         6: .line 253
            iload 7 /* arity */
            iflt 7
            iload 7 /* arity */
            aload 6 /* newArgs */
            arraylength
            if_icmpne 9
         7: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            astore 8 /* context */
        start local 8 // org.jruby.runtime.ThreadContext context
         8: .line 255
            aload 1 /* method */
            aload 8 /* context */
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.self:Lorg/jruby/runtime/builtin/IRubyObject;
            aload 3 /* metaClass */
            aload 4 /* name */
            aload 6 /* newArgs */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 8 // org.jruby.runtime.ThreadContext context
         9: .line 257
      StackMap locals:
      StackMap stack:
            aload 2 /* proxyMethod */
            invokeinterface org.jruby.javasupport.proxy.JavaProxyMethod.hasSuperImplementation:()Z
            ifeq 13
        10: .line 258
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            astore 8 /* context */
        start local 8 // org.jruby.runtime.ThreadContext context
        11: .line 259
            aload 3 /* metaClass */
            invokevirtual org.jruby.RubyClass.getSuperClass:()Lorg/jruby/RubyClass;
            astore 9 /* superClass */
        start local 9 // org.jruby.RubyClass superClass
        12: .line 260
            aload 8 /* context */
            aload 9 /* superClass */
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.self:Lorg/jruby/runtime/builtin/IRubyObject;
            aload 4 /* name */
            aload 6 /* newArgs */
            getstatic org.jruby.runtime.Block.NULL_BLOCK:Lorg/jruby/runtime/Block;
            invokestatic org.jruby.runtime.Helpers.invokeAs:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/RubyClass;Lorg/jruby/runtime/builtin/IRubyObject;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 9 // org.jruby.RubyClass superClass
        end local 8 // org.jruby.runtime.ThreadContext context
        13: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler.runtime:Lorg/jruby/Ruby;
            aload 6 /* newArgs */
            arraylength
            iload 7 /* arity */
            invokevirtual org.jruby.Ruby.newArgumentError:(II)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 7 // int arity
        end local 6 // org.jruby.runtime.builtin.IRubyObject[] newArgs
        end local 5 // java.lang.Object[] nargs
        end local 4 // java.lang.String name
        end local 3 // org.jruby.RubyClass metaClass
        end local 2 // org.jruby.javasupport.proxy.JavaProxyMethod proxyMethod
        end local 1 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 0 // org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lorg/jruby/javasupport/proxy/JavaProxyConstructor$MethodInvocationHandler;
            0   14     1       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            0   14     2  proxyMethod  Lorg/jruby/javasupport/proxy/JavaProxyMethod;
            0   14     3    metaClass  Lorg/jruby/RubyClass;
            0   14     4         name  Ljava/lang/String;
            0   14     5        nargs  [Ljava/lang/Object;
            1   14     6      newArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            2    5     7            i  I
            6   14     7        arity  I
            8    9     8      context  Lorg/jruby/runtime/ThreadContext;
           11   13     8      context  Lorg/jruby/runtime/ThreadContext;
           12   13     9   superClass  Lorg/jruby/RubyClass;
    MethodParameters:
             Name  Flags
      method       final
      proxyMethod  final
      metaClass    final
      name         final
      nargs        final
}
SourceFile: "JavaProxyConstructor.java"
NestHost: org.jruby.javasupport.proxy.JavaProxyConstructor
InnerClasses:
  private final MethodInvocationHandler = org.jruby.javasupport.proxy.JavaProxyConstructor$MethodInvocationHandler of org.jruby.javasupport.proxy.JavaProxyConstructor