public class org.jruby.java.dispatch.CallableSelector
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.java.dispatch.CallableSelector
  super_class: java.lang.Object
{
  private static final org.jruby.java.dispatch.CallableSelector$CallableAcceptor Exact;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$CallableAcceptor AssignableAndPrimitivable;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$CallableAcceptor AssignableOrDuckable;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$CallableAcceptor AssignableAndPrimitivableWithVarargs;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$Matcher EXACT;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$Matcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$Matcher ASSIGNABLE;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$Matcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$Matcher PRIMITIVABLE;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$Matcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.java.dispatch.CallableSelector$Matcher DUCKABLE;
    descriptor: Lorg/jruby/java/dispatch/CallableSelector$Matcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 483
            new org.jruby.java.dispatch.CallableSelector$1
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$1.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.Exact:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
         1: .line 489
            new org.jruby.java.dispatch.CallableSelector$2
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$2.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.AssignableAndPrimitivable:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
         2: .line 495
            new org.jruby.java.dispatch.CallableSelector$3
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$3.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.AssignableOrDuckable:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
         3: .line 501
            new org.jruby.java.dispatch.CallableSelector$4
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$4.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.AssignableAndPrimitivableWithVarargs:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
         4: .line 512
            new org.jruby.java.dispatch.CallableSelector$5
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$5.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.EXACT:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
         5: .line 520
            new org.jruby.java.dispatch.CallableSelector$6
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$6.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
         6: .line 527
            new org.jruby.java.dispatch.CallableSelector$7
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$7.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.PRIMITIVABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
         7: .line 534
            new org.jruby.java.dispatch.CallableSelector$8
            dup
            invokespecial org.jruby.java.dispatch.CallableSelector$8.<init>:()V
            putstatic org.jruby.java.dispatch.CallableSelector.DUCKABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
         8: .line 539
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.java.dispatch.CallableSelector this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.jruby.java.dispatch.CallableSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/java/dispatch/CallableSelector;

  public static <T extends org.jruby.javasupport.ParameterTypes> T matchingCallableArityN(org.jruby.Ruby, org.jruby.java.dispatch.CallableSelector$CallableCache<T>, T[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 41
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:([Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 42
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.getSignature:(I)Lorg/jruby/javasupport/ParameterTypes;
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.ParameterTypes method
         2: .line 43
            aload 5 /* method */
            ifnonnull 5
         3: .line 44
            aload 0 /* runtime */
            aload 2 /* methods */
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 5 /* method */
         4: .line 45
            aload 5 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 4 /* signatureCode */
            aload 5 /* method */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.putSignature:(ILorg/jruby/javasupport/ParameterTypes;)V
         5: .line 47
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.ParameterTypes method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;[TT;[Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      args     

  public static <T extends org.jruby.javasupport.ParameterTypes> T matchingCallableArityOne(org.jruby.Ruby, org.jruby.java.dispatch.CallableSelector$CallableCache<T>, T[], org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache;[Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
         0: .line 51
            aload 3 /* arg0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 52
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.getSignature:(I)Lorg/jruby/javasupport/ParameterTypes;
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.ParameterTypes method
         2: .line 53
            aload 5 /* method */
            ifnonnull 5
         3: .line 54
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 5 /* method */
         4: .line 55
            aload 5 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 4 /* signatureCode */
            aload 5 /* method */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.putSignature:(ILorg/jruby/javasupport/ParameterTypes;)V
         5: .line 57
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.ParameterTypes method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     

  public static <T extends org.jruby.javasupport.ParameterTypes> T matchingCallableArityTwo(org.jruby.Ruby, org.jruby.java.dispatch.CallableSelector$CallableCache<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache;[Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
         0: .line 61
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 5 /* signatureCode */
        start local 5 // int signatureCode
         1: .line 62
            aload 1 /* cache */
            iload 5 /* signatureCode */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.getSignature:(I)Lorg/jruby/javasupport/ParameterTypes;
            astore 6 /* method */
        start local 6 // org.jruby.javasupport.ParameterTypes method
         2: .line 63
            aload 6 /* method */
            ifnonnull 5
         3: .line 64
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_2
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 6 /* method */
         4: .line 65
            aload 6 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 5 /* signatureCode */
            aload 6 /* method */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.putSignature:(ILorg/jruby/javasupport/ParameterTypes;)V
         5: .line 67
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 6 /* method */
            areturn
        end local 6 // org.jruby.javasupport.ParameterTypes method
        end local 5 // int signatureCode
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     5  signatureCode  I
            2    6     6         method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     

  public static <T extends org.jruby.javasupport.ParameterTypes> T matchingCallableArityThree(org.jruby.Ruby, org.jruby.java.dispatch.CallableSelector$CallableCache<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache;[Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
         0: .line 71
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 6 /* signatureCode */
        start local 6 // int signatureCode
         1: .line 72
            aload 1 /* cache */
            iload 6 /* signatureCode */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.getSignature:(I)Lorg/jruby/javasupport/ParameterTypes;
            astore 7 /* method */
        start local 7 // org.jruby.javasupport.ParameterTypes method
         2: .line 73
            aload 7 /* method */
            ifnonnull 5
         3: .line 74
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_3
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 7 /* method */
         4: .line 75
            aload 7 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 6 /* signatureCode */
            aload 7 /* method */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.putSignature:(ILorg/jruby/javasupport/ParameterTypes;)V
         5: .line 77
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 7 /* method */
            areturn
        end local 7 // org.jruby.javasupport.ParameterTypes method
        end local 6 // int signatureCode
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     6  signatureCode  I
            2    6     7         method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     
      arg2     

  public static <T extends org.jruby.javasupport.ParameterTypes> T matchingCallableArityFour(org.jruby.Ruby, org.jruby.java.dispatch.CallableSelector$CallableCache<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache;[Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg3
         0: .line 81
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            aload 6 /* arg3 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 7 /* signatureCode */
        start local 7 // int signatureCode
         1: .line 82
            aload 1 /* cache */
            iload 7 /* signatureCode */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.getSignature:(I)Lorg/jruby/javasupport/ParameterTypes;
            astore 8 /* method */
        start local 8 // org.jruby.javasupport.ParameterTypes method
         2: .line 83
            aload 8 /* method */
            ifnonnull 5
         3: .line 84
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_4
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            dup
            iconst_3
            aload 6 /* arg3 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 8 /* method */
         4: .line 85
            aload 8 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 7 /* signatureCode */
            aload 8 /* method */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableCache.putSignature:(ILorg/jruby/javasupport/ParameterTypes;)V
         5: .line 87
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 8 /* method */
            areturn
        end local 8 // org.jruby.javasupport.ParameterTypes method
        end local 7 // int signatureCode
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg3
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableCache cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     6           arg3  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     7  signatureCode  I
            2    6     8         method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;Lorg/jruby/java/dispatch/CallableSelector$CallableCache<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     
      arg2     
      arg3     

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityN(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, T[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 93
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:([Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 94
            aload 1 /* invoker */
            iload 4 /* signatureCode */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.JavaCallable method
         2: .line 95
            aload 5 /* method */
            ifnonnull 5
         3: .line 96
            aload 0 /* runtime */
            aload 2 /* methods */
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
         4: .line 97
            aload 5 /* method */
            ifnull 5
            aload 1 /* invoker */
            iload 4 /* signatureCode */
            aload 5 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         5: .line 99
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.JavaCallable method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1        invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;[Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  
      args     

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityZero(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, );
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
         0: .line 104
            aload 1 /* invoker */
            iconst_0
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 3 /* method */
        start local 3 // org.jruby.javasupport.JavaCallable method
         1: .line 105
            aload 3 /* method */
            ifnonnull 4
         2: .line 106
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_0
            anewarray org.jruby.runtime.builtin.IRubyObject
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 3 /* method */
         3: .line 107
            aload 3 /* method */
            ifnull 4
            aload 1 /* invoker */
            iconst_0
            aload 3 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         4: .line 109
      StackMap locals: org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 3 /* method */
            areturn
        end local 3 // org.jruby.javasupport.JavaCallable method
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  runtime  Lorg/jruby/Ruby;
            0    5     1  invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    5     2  methods  [Lorg/jruby/javasupport/JavaCallable;
            1    5     3   method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityOne(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, T[], org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
         0: .line 113
            aload 3 /* arg0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 114
            aload 1 /* invoker */
            iload 4 /* signatureCode */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.JavaCallable method
         2: .line 115
            aload 5 /* method */
            ifnonnull 5
         3: .line 116
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
         4: .line 117
            aload 5 /* method */
            ifnull 5
            aload 1 /* invoker */
            iload 4 /* signatureCode */
            aload 5 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         5: .line 119
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.JavaCallable method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1        invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  
      arg0     

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityTwo(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
         0: .line 123
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 5 /* signatureCode */
        start local 5 // int signatureCode
         1: .line 124
            aload 1 /* invoker */
            iload 5 /* signatureCode */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 6 /* method */
        start local 6 // org.jruby.javasupport.JavaCallable method
         2: .line 125
            aload 6 /* method */
            ifnonnull 5
         3: .line 126
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_2
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 6 /* method */
         4: .line 127
            aload 6 /* method */
            ifnull 5
            aload 1 /* invoker */
            iload 5 /* signatureCode */
            aload 6 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         5: .line 129
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 6 /* method */
            areturn
        end local 6 // org.jruby.javasupport.JavaCallable method
        end local 5 // int signatureCode
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1        invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     5  signatureCode  I
            2    6     6         method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  
      arg0     
      arg1     

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityThree(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
         0: .line 133
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 6 /* signatureCode */
        start local 6 // int signatureCode
         1: .line 134
            aload 1 /* invoker */
            iload 6 /* signatureCode */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 7 /* method */
        start local 7 // org.jruby.javasupport.JavaCallable method
         2: .line 135
            aload 7 /* method */
            ifnonnull 5
         3: .line 136
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_3
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 7 /* method */
         4: .line 137
            aload 7 /* method */
            ifnull 5
            aload 1 /* invoker */
            iload 6 /* signatureCode */
            aload 7 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         5: .line 139
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 7 /* method */
            areturn
        end local 7 // org.jruby.javasupport.JavaCallable method
        end local 6 // int signatureCode
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1        invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     6  signatureCode  I
            2    6     7         method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  
      arg0     
      arg1     
      arg2     

  public static <T extends org.jruby.javasupport.JavaCallable> T matchingCallableArityFour(org.jruby.Ruby, org.jruby.java.invokers.RubyToJavaInvoker<T>, T[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg3
         0: .line 143
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            aload 6 /* arg3 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 7 /* signatureCode */
        start local 7 // int signatureCode
         1: .line 144
            aload 1 /* invoker */
            iload 7 /* signatureCode */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.getSignature:(I)Lorg/jruby/javasupport/JavaCallable;
            astore 8 /* method */
        start local 8 // org.jruby.javasupport.JavaCallable method
         2: .line 145
            aload 8 /* method */
            ifnonnull 5
         3: .line 146
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_4
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            dup
            iconst_3
            aload 6 /* arg3 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 8 /* method */
         4: .line 147
            aload 8 /* method */
            ifnull 5
            aload 1 /* invoker */
            iload 7 /* signatureCode */
            aload 8 /* method */
            invokevirtual org.jruby.java.invokers.RubyToJavaInvoker.putSignature:(ILorg/jruby/javasupport/JavaCallable;)V
         5: .line 149
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 8 /* method */
            areturn
        end local 8 // org.jruby.javasupport.JavaCallable method
        end local 7 // int signatureCode
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg3
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // org.jruby.java.invokers.RubyToJavaInvoker invoker
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1        invoker  Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     6           arg3  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     7  signatureCode  I
            2    6     8         method  TT;
    Signature: <T:Lorg/jruby/javasupport/JavaCallable;>(Lorg/jruby/Ruby;Lorg/jruby/java/invokers/RubyToJavaInvoker<TT;>;[TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  
      invoker  
      methods  
      arg0     
      arg1     
      arg2     
      arg3     

  private static <T extends org.jruby.javasupport.ParameterTypes> T findMatchingCallableForArgs(org.jruby.Ruby, T[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=22, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.javasupport.ParameterTypes[] methods
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 154
            aconst_null
            astore 3 /* method */
        start local 3 // org.jruby.javasupport.ParameterTypes method
         1: .line 157
            aload 1 /* methods */
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallableCandidates:([Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/util/List;
            astore 4 /* candidates */
        start local 4 // java.util.List candidates
         2: .line 158
            aload 4 /* candidates */
            invokeinterface java.util.List.size:()I
            istore 5 /* size */
        start local 5 // int size
         3: .line 160
            iload 5 /* size */
            ifle 103
         4: .line 162
            iload 5 /* size */
            iconst_1
            if_icmpne 5
            aload 4 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes
            astore 3 /* method */
            goto 103
         5: .line 164
      StackMap locals: org.jruby.javasupport.ParameterTypes java.util.List int
      StackMap stack:
            aload 4 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes
            astore 6 /* mostSpecific */
        start local 6 // org.jruby.javasupport.ParameterTypes mostSpecific
         6: .line 165
            aload 6 /* mostSpecific */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 7 /* msTypes */
        start local 7 // java.lang.Class[] msTypes
         7: .line 166
            iconst_0
            istore 8 /* ambiguous */
        start local 8 // boolean ambiguous
         8: .line 168
            aload 2 /* args */
            arraylength
            ifle 9
            aload 2 /* args */
            aload 2 /* args */
            arraylength
            iconst_1
            isub
            aaload
            goto 10
      StackMap locals: org.jruby.javasupport.ParameterTypes java.lang.Class[] int
      StackMap stack:
         9: aconst_null
      StackMap locals:
      StackMap stack: org.jruby.runtime.builtin.IRubyObject
        10: astore 9 /* lastArg */
        start local 9 // org.jruby.runtime.builtin.IRubyObject lastArg
        11: .line 169
            ldc -2147483648
            istore 10 /* mostSpecificArity */
        start local 10 // int mostSpecificArity
        12: .line 172
            aload 9 /* lastArg */
            instanceof org.jruby.RubyProc
            ifeq 20
        13: .line 173
            aload 7 /* msTypes */
            arraylength
            iconst_1
            isub
            istore 13 /* last */
        start local 13 // int last
        14: .line 174
            iload 13 /* last */
            iflt 18
            aload 7 /* msTypes */
            iload 13 /* last */
            aaload
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 18
        15: .line 175
            aload 7 /* msTypes */
            iload 13 /* last */
            aaload
            invokestatic org.jruby.javasupport.Java.getFunctionalInterfaceMethod:(Ljava/lang/Class;)Ljava/lang/reflect/Method;
            dup
            astore 12 /* implMethod */
        start local 12 // java.lang.reflect.Method implMethod
        16: ifnull 18
        17: .line 176
            aload 12 /* implMethod */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            istore 10 /* mostSpecificArity */
        end local 12 // java.lang.reflect.Method implMethod
        18: .line 178
      StackMap locals: org.jruby.Ruby org.jruby.javasupport.ParameterTypes[] org.jruby.runtime.builtin.IRubyObject[] org.jruby.javasupport.ParameterTypes java.util.List int org.jruby.javasupport.ParameterTypes java.lang.Class[] int org.jruby.runtime.builtin.IRubyObject int top top int
      StackMap stack:
            aload 9 /* lastArg */
            invokestatic org.jruby.java.dispatch.CallableSelector.procArityValue:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 11 /* procArity */
        end local 13 // int last
        start local 11 // int procArity
        19: .line 179
            goto 21
        end local 11 // int procArity
        20: .line 181
      StackMap locals: org.jruby.Ruby org.jruby.javasupport.ParameterTypes[] org.jruby.runtime.builtin.IRubyObject[] org.jruby.javasupport.ParameterTypes java.util.List int org.jruby.javasupport.ParameterTypes java.lang.Class[] int org.jruby.runtime.builtin.IRubyObject int
      StackMap stack:
            ldc -2147483648
            istore 11 /* procArity */
        start local 11 // int procArity
        21: .line 185
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 12 /* c */
        start local 12 // int c
        22: goto 85
        23: .line 186
      StackMap locals: int
      StackMap stack:
            aload 4 /* candidates */
            iload 12 /* c */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes
            astore 13 /* candidate */
        start local 13 // org.jruby.javasupport.ParameterTypes candidate
        24: .line 187
            aload 13 /* candidate */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 14 /* cTypes */
        start local 14 // java.lang.Class[] cTypes
        25: .line 191
            iload 11 /* procArity */
            ldc -2147483648
            if_icmpeq 26
            iconst_1
            goto 27
      StackMap locals: org.jruby.javasupport.ParameterTypes java.lang.Class[]
      StackMap stack:
        26: iconst_0
      StackMap locals:
      StackMap stack: int
        27: istore 15 /* lastArgProc */
        start local 15 // boolean lastArgProc
        28: .line 192
            aload 7 /* msTypes */
            aload 14 /* cTypes */
            iload 15 /* lastArgProc */
            invokestatic org.jruby.java.dispatch.CallableSelector.moreSpecificTypes:([Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/Boolean;
            astore 16 /* moreSpecific */
        start local 16 // java.lang.Boolean moreSpecific
        29: .line 193
            aload 16 /* moreSpecific */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            if_acmpne 32
        30: .line 194
            aload 13 /* candidate */
            astore 6 /* mostSpecific */
            aload 14 /* cTypes */
            astore 7 /* msTypes */
        31: .line 195
            iconst_0
            istore 8 /* ambiguous */
            goto 84
        32: .line 199
      StackMap locals: int java.lang.Boolean
      StackMap stack:
            iconst_0
            istore 17 /* i */
        start local 17 // int i
        33: goto 42
        34: .line 203
      StackMap locals: int
      StackMap stack:
            aload 7 /* msTypes */
            iload 17 /* i */
            aaload
            astore 18 /* msType */
        start local 18 // java.lang.Class msType
        35: aload 14 /* cTypes */
            iload 17 /* i */
            aaload
            astore 19 /* cType */
        start local 19 // java.lang.Class cType
        36: .line 204
            aload 18 /* msType */
            aload 19 /* cType */
            if_acmpeq 37
            aload 18 /* msType */
            aload 19 /* cType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 37
            aload 19 /* cType */
            aload 18 /* msType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 38
        37: .line 205
      StackMap locals: java.lang.Class java.lang.Class
      StackMap stack:
            iconst_0
            istore 8 /* ambiguous */
            goto 43
        38: .line 207
      StackMap locals:
      StackMap stack:
            aload 19 /* cType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 40
            aload 18 /* msType */
            aload 19 /* cType */
            invokestatic org.jruby.util.CodegenUtils.getBoxType:(Ljava/lang/Class;)Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 40
        39: .line 208
            iconst_0
            istore 8 /* ambiguous */
            goto 43
        40: .line 211
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 8 /* ambiguous */
        end local 19 // java.lang.Class cType
        end local 18 // java.lang.Class msType
        41: .line 199
            iinc 17 /* i */ 1
      StackMap locals:
      StackMap stack:
        42: iload 17 /* i */
            aload 7 /* msTypes */
            arraylength
            if_icmplt 34
        end local 17 // int i
        43: .line 217
      StackMap locals:
      StackMap stack:
            iload 15 /* lastArgProc */
            ifeq 72
        44: .line 221
            aload 14 /* cTypes */
            arraylength
            iconst_1
            isub
            istore 18 /* last */
        start local 18 // int last
        45: .line 222
            iload 18 /* last */
            iflt 72
            aload 14 /* cTypes */
            iload 18 /* last */
            aaload
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 72
            aload 14 /* cTypes */
            iload 18 /* last */
            aaload
            invokestatic org.jruby.javasupport.Java.getFunctionalInterfaceMethod:(Ljava/lang/Class;)Ljava/lang/reflect/Method;
            dup
            astore 17 /* implMethod */
        start local 17 // java.lang.reflect.Method implMethod
        46: ifnull 72
        47: .line 225
            aload 17 /* implMethod */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            istore 19 /* methodArity */
        start local 19 // int methodArity
        48: .line 226
            iload 19 /* methodArity */
            iload 11 /* procArity */
            if_icmpne 53
        49: .line 227
            iload 10 /* mostSpecificArity */
            iload 19 /* methodArity */
            if_icmpne 50
            iconst_1
            istore 8 /* ambiguous */
            goto 84
        50: .line 230
      StackMap locals: java.lang.reflect.Method int int
      StackMap stack:
            aload 13 /* candidate */
            astore 6 /* mostSpecific */
            aload 14 /* cTypes */
            astore 7 /* msTypes */
        51: .line 231
            iload 11 /* procArity */
            istore 10 /* mostSpecificArity */
            iconst_0
            istore 8 /* ambiguous */
        52: .line 233
            goto 84
        53: .line 235
      StackMap locals:
      StackMap stack:
            iload 10 /* mostSpecificArity */
            iload 11 /* procArity */
            if_icmpeq 71
        54: .line 236
            iload 19 /* methodArity */
            iload 11 /* procArity */
            if_icmpge 60
        55: .line 237
            iload 10 /* mostSpecificArity */
            iload 19 /* methodArity */
            if_icmpne 56
            iconst_1
            istore 8 /* ambiguous */
            goto 84
        56: .line 238
      StackMap locals:
      StackMap stack:
            iload 10 /* mostSpecificArity */
            iload 19 /* methodArity */
            if_icmpge 84
        57: .line 239
            aload 13 /* candidate */
            astore 6 /* mostSpecific */
            aload 14 /* cTypes */
            astore 7 /* msTypes */
        58: .line 240
            iload 19 /* methodArity */
            istore 10 /* mostSpecificArity */
            iconst_0
            istore 8 /* ambiguous */
        59: .line 242
            goto 84
        60: .line 244
      StackMap locals:
      StackMap stack:
            iload 11 /* procArity */
            ifge 72
            iload 19 /* methodArity */
            iload 11 /* procArity */
            iconst_1
            iadd
            ineg
            if_icmplt 72
        61: .line 245
            iload 10 /* mostSpecificArity */
            iload 19 /* methodArity */
            if_icmpne 62
            iconst_1
            istore 8 /* ambiguous */
            goto 84
        62: .line 247
      StackMap locals:
      StackMap stack:
            iload 10 /* mostSpecificArity */
            iload 11 /* procArity */
            iadd
            istore 20 /* msa */
        start local 20 // int msa
        63: .line 248
            iload 19 /* methodArity */
            iload 11 /* procArity */
            iadd
            istore 21 /* ma */
        start local 21 // int ma
        64: .line 249
            iload 20 /* msa */
            ifge 65
            iload 21 /* ma */
            ifge 65
            iload 20 /* msa */
            iload 21 /* ma */
            if_icmplt 67
        65: .line 250
      StackMap locals: int int
      StackMap stack:
            iload 20 /* msa */
            iflt 66
            iload 21 /* ma */
            iflt 66
            iload 20 /* msa */
            iload 21 /* ma */
            if_icmpgt 67
        66: .line 251
      StackMap locals:
      StackMap stack:
            iload 20 /* msa */
            iload 21 /* ma */
            if_icmple 69
        67: .line 252
      StackMap locals:
      StackMap stack:
            aload 13 /* candidate */
            astore 6 /* mostSpecific */
            aload 14 /* cTypes */
            astore 7 /* msTypes */
        68: .line 253
            iload 19 /* methodArity */
            istore 10 /* mostSpecificArity */
        69: .line 255
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* ambiguous */
        end local 21 // int ma
        end local 20 // int msa
        70: .line 257
            goto 84
        71: .line 261
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* ambiguous */
        end local 19 // int methodArity
        end local 18 // int last
        end local 17 // java.lang.reflect.Method implMethod
        72: .line 268
      StackMap locals:
      StackMap stack:
            iload 8 /* ambiguous */
            ifeq 84
        73: .line 269
            iconst_0
            istore 17 /* msPref */
        start local 17 // int msPref
        74: iconst_0
            istore 18 /* cPref */
        start local 18 // int cPref
        75: .line 270
            iconst_0
            istore 19 /* i */
        start local 19 // int i
        76: goto 82
        77: .line 271
      StackMap locals: int int int
      StackMap stack:
            aload 7 /* msTypes */
            iload 19 /* i */
            aaload
            astore 20 /* msType */
        start local 20 // java.lang.Class msType
        78: aload 14 /* cTypes */
            iload 19 /* i */
            aaload
            astore 21 /* cType */
        start local 21 // java.lang.Class cType
        79: .line 272
            iload 17 /* msPref */
            aload 20 /* msType */
            aload 2 /* args */
            iload 19 /* i */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.calcTypePreference:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            istore 17 /* msPref */
        80: .line 273
            iload 18 /* cPref */
            aload 21 /* cType */
            aload 2 /* args */
            iload 19 /* i */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.calcTypePreference:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            istore 18 /* cPref */
        end local 21 // java.lang.Class cType
        end local 20 // java.lang.Class msType
        81: .line 270
            iinc 19 /* i */ 1
      StackMap locals:
      StackMap stack:
        82: iload 19 /* i */
            aload 7 /* msTypes */
            arraylength
            if_icmplt 77
        end local 19 // int i
        83: .line 277
            iload 17 /* msPref */
            iload 18 /* cPref */
            if_icmple 84
            iconst_0
            istore 8 /* ambiguous */
        end local 18 // int cPref
        end local 17 // int msPref
        end local 16 // java.lang.Boolean moreSpecific
        end local 15 // boolean lastArgProc
        end local 14 // java.lang.Class[] cTypes
        end local 13 // org.jruby.javasupport.ParameterTypes candidate
        84: .line 185
      StackMap locals: org.jruby.Ruby org.jruby.javasupport.ParameterTypes[] org.jruby.runtime.builtin.IRubyObject[] org.jruby.javasupport.ParameterTypes java.util.List int org.jruby.javasupport.ParameterTypes java.lang.Class[] int org.jruby.runtime.builtin.IRubyObject int int int
      StackMap stack:
            iinc 12 /* c */ 1
      StackMap locals:
      StackMap stack:
        85: iload 12 /* c */
            iload 5 /* size */
            if_icmplt 23
        end local 12 // int c
        86: .line 280
            aload 6 /* mostSpecific */
            astore 3 /* method */
        87: .line 282
            iload 8 /* ambiguous */
            ifeq 103
        88: .line 283
            getstatic org.jruby.util.cli.Options.JI_AMBIGUOUS_CALLS_DEBUG:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 97
        89: .line 284
            aload 0 /* runtime */
        90: .line 285
            new java.lang.StringBuilder
            dup
            ldc "multiple Java methods found, dumping backtrace and choosing "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        91: .line 286
            aload 3 /* method */
            checkcast org.jruby.javasupport.JavaCallable
            invokevirtual org.jruby.javasupport.JavaCallable.accessibleObject:()Ljava/lang/reflect/AccessibleObject;
            checkcast java.lang.reflect.Member
            invokeinterface java.lang.reflect.Member.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        92: .line 287
            aload 7 /* msTypes */
            invokestatic org.jruby.util.CodegenUtils.prettyParams:([Ljava/lang/Class;)Ljava/lang/CharSequence;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        93: .line 285
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        94: .line 284
            invokevirtual org.jruby.Ruby.newRuntimeError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
        95: .line 288
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErr:()Ljava/io/PrintStream;
            invokevirtual org.jruby.exceptions.RaiseException.printStackTrace:(Ljava/io/PrintStream;)V
        96: .line 289
            goto 103
        97: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getWarnings:()Lorg/jruby/common/RubyWarnings;
        98: .line 291
            new java.lang.StringBuilder
            dup
            ldc "multiple Java methods found, use -X"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic org.jruby.util.cli.Options.JI_AMBIGUOUS_CALLS_DEBUG:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.propertyName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " for backtrace. Choosing "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        99: .line 292
            aload 3 /* method */
            checkcast org.jruby.javasupport.JavaCallable
            invokevirtual org.jruby.javasupport.JavaCallable.accessibleObject:()Ljava/lang/reflect/AccessibleObject;
            checkcast java.lang.reflect.Member
            invokeinterface java.lang.reflect.Member.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
       100: .line 293
            aload 7 /* msTypes */
            invokestatic org.jruby.util.CodegenUtils.prettyParams:([Ljava/lang/Class;)Ljava/lang/CharSequence;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
       101: .line 291
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       102: .line 290
            invokevirtual org.jruby.common.RubyWarnings.warn:(Ljava/lang/String;)V
        end local 11 // int procArity
        end local 10 // int mostSpecificArity
        end local 9 // org.jruby.runtime.builtin.IRubyObject lastArg
        end local 8 // boolean ambiguous
        end local 7 // java.lang.Class[] msTypes
        end local 6 // org.jruby.javasupport.ParameterTypes mostSpecific
       103: .line 300
      StackMap locals: org.jruby.Ruby org.jruby.javasupport.ParameterTypes[] org.jruby.runtime.builtin.IRubyObject[] org.jruby.javasupport.ParameterTypes java.util.List int
      StackMap stack:
            aload 3 /* method */
            ifnonnull 105
       104: .line 301
            aload 0 /* runtime */
            aload 1 /* methods */
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgsFallback:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
       105: .line 304
      StackMap locals:
      StackMap stack:
            aload 3 /* method */
            areturn
        end local 5 // int size
        end local 4 // java.util.List candidates
        end local 3 // org.jruby.javasupport.ParameterTypes method
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.javasupport.ParameterTypes[] methods
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  106     0            runtime  Lorg/jruby/Ruby;
            0  106     1            methods  [Lorg/jruby/javasupport/ParameterTypes;
            0  106     2               args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1  106     3             method  TT;
            2  106     4         candidates  Ljava/util/List<TT;>;
            3  106     5               size  I
            6  103     6       mostSpecific  TT;
            7  103     7            msTypes  [Ljava/lang/Class;
            8  103     8          ambiguous  Z
           11  103     9            lastArg  Lorg/jruby/runtime/builtin/IRubyObject;
           12  103    10  mostSpecificArity  I
           19   20    11          procArity  I
           21  103    11          procArity  I
           16   18    12         implMethod  Ljava/lang/reflect/Method;
           14   19    13               last  I
           22   86    12                  c  I
           24   84    13          candidate  TT;
           25   84    14             cTypes  [Ljava/lang/Class;
           28   84    15        lastArgProc  Z
           29   84    16       moreSpecific  Ljava/lang/Boolean;
           33   43    17                  i  I
           35   41    18             msType  Ljava/lang/Class<*>;
           36   41    19              cType  Ljava/lang/Class<*>;
           46   72    17         implMethod  Ljava/lang/reflect/Method;
           45   72    18               last  I
           48   72    19        methodArity  I
           63   70    20                msa  I
           64   70    21                 ma  I
           74   84    17             msPref  I
           75   84    18              cPref  I
           76   83    19                  i  I
           78   81    20             msType  Ljava/lang/Class<*>;
           79   81    21              cType  Ljava/lang/Class<*>;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;[TT;[Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  final
      methods  final
      args     final

  private static java.lang.Boolean moreSpecificTypes(java.lang.Class[], java.lang.Class[], boolean);
    descriptor: ([Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/Boolean;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=3
        start local 0 // java.lang.Class[] msTypes
        start local 1 // java.lang.Class[] cTypes
        start local 2 // boolean lastArgProc
         0: .line 310
            aload 0 /* msTypes */
            arraylength
            iconst_1
            isub
            istore 3 /* last */
        start local 3 // int last
         1: .line 311
            iconst_0
            istore 4 /* moreSpecific */
        start local 4 // int moreSpecific
         2: .line 312
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         3: goto 13
         4: .line 313
      StackMap locals: java.lang.Class[] java.lang.Class[] int int int top top int
      StackMap stack:
            aload 0 /* msTypes */
            iload 7 /* i */
            aaload
            astore 5 /* msType */
        start local 5 // java.lang.Class msType
         5: aload 1 /* cTypes */
            iload 7 /* i */
            aaload
            astore 6 /* cType */
        start local 6 // java.lang.Class cType
         6: .line 314
            aload 5 /* msType */
            aload 6 /* cType */
            if_acmpne 7
            goto 12
         7: .line 315
      StackMap locals: java.lang.Class[] java.lang.Class[] int int int java.lang.Class java.lang.Class int
      StackMap stack:
            aload 5 /* msType */
            aload 6 /* cType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 10
         8: .line 316
            iinc 4 /* moreSpecific */ 1
         9: .line 317
            goto 12
        10: .line 318
      StackMap locals:
      StackMap stack:
            aload 6 /* cType */
            aload 5 /* msType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 12
        11: .line 319
            iinc 4 /* moreSpecific */ -1
        12: .line 312
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
        end local 6 // java.lang.Class cType
        end local 5 // java.lang.Class msType
      StackMap locals: java.lang.Class[] java.lang.Class[] int int int top top int
      StackMap stack:
        13: iload 7 /* i */
            iload 3 /* last */
            if_icmplt 4
        end local 7 // int i
        14: .line 324
            iload 3 /* last */
            iflt 28
        15: .line 325
            aload 0 /* msTypes */
            iload 3 /* last */
            aaload
            astore 5 /* msType */
        start local 5 // java.lang.Class msType
        16: aload 1 /* cTypes */
            iload 3 /* last */
            aaload
            astore 6 /* cType */
        start local 6 // java.lang.Class cType
        17: .line 326
            iload 2 /* lastArgProc */
            ifeq 22
        18: .line 327
            aload 6 /* cType */
            ldc Lorg/jruby/RubyProc;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 21
        19: .line 328
            aload 5 /* msType */
            ldc Lorg/jruby/RubyProc;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 28
            iinc 4 /* moreSpecific */ 1
        20: .line 330
            goto 28
        21: .line 333
      StackMap locals: java.lang.Class[] java.lang.Class[] int int int java.lang.Class java.lang.Class
      StackMap stack:
            aconst_null
            areturn
        22: .line 337
      StackMap locals:
      StackMap stack:
            aload 5 /* msType */
            aload 6 /* cType */
            if_acmpne 23
            goto 28
        23: .line 338
      StackMap locals:
      StackMap stack:
            aload 5 /* msType */
            aload 6 /* cType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 26
        24: .line 339
            iinc 4 /* moreSpecific */ 1
        25: .line 340
            goto 28
        26: .line 341
      StackMap locals:
      StackMap stack:
            aload 6 /* cType */
            aload 5 /* msType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 28
        27: .line 342
            iinc 4 /* moreSpecific */ -1
        end local 6 // java.lang.Class cType
        end local 5 // java.lang.Class msType
        28: .line 346
      StackMap locals:
      StackMap stack:
            iload 4 /* moreSpecific */
            ifle 29
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            goto 30
      StackMap locals:
      StackMap stack:
        29: getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
      StackMap locals:
      StackMap stack: java.lang.Boolean
        30: areturn
        end local 4 // int moreSpecific
        end local 3 // int last
        end local 2 // boolean lastArgProc
        end local 1 // java.lang.Class[] cTypes
        end local 0 // java.lang.Class[] msTypes
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   31     0       msTypes  [Ljava/lang/Class;
            0   31     1        cTypes  [Ljava/lang/Class;
            0   31     2   lastArgProc  Z
            1   31     3          last  I
            2   31     4  moreSpecific  I
            5   13     5        msType  Ljava/lang/Class<*>;
           16   28     5        msType  Ljava/lang/Class<*>;
            6   13     6         cType  Ljava/lang/Class<*>;
           17   28     6         cType  Ljava/lang/Class<*>;
            3   14     7             i  I
    MethodParameters:
             Name  Flags
      msTypes      final
      cTypes       final
      lastArgProc  final

  private static <T extends org.jruby.javasupport.ParameterTypes> T findMatchingCallableForArgsFallback(org.jruby.Ruby, T[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.javasupport.ParameterTypes[] methods
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 351
            aload 1 /* methods */
            getstatic org.jruby.java.dispatch.CallableSelector.Exact:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallable:([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
        start local 3 // org.jruby.javasupport.ParameterTypes method
         1: .line 352
            aload 3 /* method */
            ifnonnull 9
         2: .line 353
            aload 1 /* methods */
            getstatic org.jruby.java.dispatch.CallableSelector.AssignableAndPrimitivable:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallable:([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
         3: .line 354
            aload 3 /* method */
            ifnonnull 9
         4: .line 355
            aload 1 /* methods */
            getstatic org.jruby.java.dispatch.CallableSelector.AssignableOrDuckable:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallable:([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
         5: .line 356
            aload 3 /* method */
            ifnonnull 9
         6: .line 357
            aload 1 /* methods */
            getstatic org.jruby.java.dispatch.CallableSelector.AssignableOrDuckable:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallable:([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
         7: .line 358
            aload 3 /* method */
            ifnonnull 9
         8: .line 359
            aload 1 /* methods */
            getstatic org.jruby.java.dispatch.CallableSelector.AssignableAndPrimitivableWithVarargs:Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findCallable:([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 3 /* method */
         9: .line 364
      StackMap locals: org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 3 /* method */
            areturn
        end local 3 // org.jruby.javasupport.ParameterTypes method
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.javasupport.ParameterTypes[] methods
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0  runtime  Lorg/jruby/Ruby;
            0   10     1  methods  [Lorg/jruby/javasupport/ParameterTypes;
            0   10     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1   10     3   method  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>(Lorg/jruby/Ruby;[TT;[Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
         Name  Flags
      runtime  final
      methods  final
      args     final

  private static <T extends org.jruby.javasupport.ParameterTypes> T findCallable(T[], org.jruby.java.dispatch.CallableSelector$CallableAcceptor, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: ([Lorg/jruby/javasupport/ParameterTypes;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.jruby.javasupport.ParameterTypes[] callables
        start local 1 // org.jruby.java.dispatch.CallableSelector$CallableAcceptor acceptor
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 368
            aconst_null
            astore 3 /* bestCallable */
        start local 3 // org.jruby.javasupport.ParameterTypes bestCallable
         1: .line 369
            iconst_m1
            istore 4 /* bestScore */
        start local 4 // int bestScore
         2: .line 370
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 10
         4: .line 371
      StackMap locals: org.jruby.javasupport.ParameterTypes int int
      StackMap stack:
            aload 0 /* callables */
            iload 5 /* i */
            aaload
            astore 6 /* callable */
        start local 6 // org.jruby.javasupport.ParameterTypes callable
         5: .line 373
            aload 1 /* acceptor */
            aload 6 /* callable */
            aload 2 /* args */
            invokeinterface org.jruby.java.dispatch.CallableSelector$CallableAcceptor.accept:(Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 9
         6: .line 374
            aload 6 /* callable */
            aload 2 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.calcExactnessScore:(Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 7 /* currentScore */
        start local 7 // int currentScore
         7: .line 375
            iload 7 /* currentScore */
            iload 4 /* bestScore */
            if_icmple 9
         8: .line 376
            aload 6 /* callable */
            astore 3 /* bestCallable */
            iload 7 /* currentScore */
            istore 4 /* bestScore */
        end local 7 // int currentScore
        end local 6 // org.jruby.javasupport.ParameterTypes callable
         9: .line 370
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            aload 0 /* callables */
            arraylength
            if_icmplt 4
        end local 5 // int i
        11: .line 380
            aload 3 /* bestCallable */
            areturn
        end local 4 // int bestScore
        end local 3 // org.jruby.javasupport.ParameterTypes bestCallable
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.java.dispatch.CallableSelector$CallableAcceptor acceptor
        end local 0 // org.jruby.javasupport.ParameterTypes[] callables
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0     callables  [Lorg/jruby/javasupport/ParameterTypes;
            0   12     1      acceptor  Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;
            0   12     2          args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1   12     3  bestCallable  TT;
            2   12     4     bestScore  I
            3   11     5             i  I
            5    9     6      callable  TT;
            7    9     7  currentScore  I
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>([TT;Lorg/jruby/java/dispatch/CallableSelector$CallableAcceptor;[Lorg/jruby/runtime/builtin/IRubyObject;)TT;
    MethodParameters:
           Name  Flags
      callables  
      acceptor   
      args       

  private static <T extends org.jruby.javasupport.ParameterTypes> java.util.List<T> findCallableCandidates(T[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: ([Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes[] callables
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 387
            iconst_0
            istore 2 /* c */
        start local 2 // int c
         1: goto 5
         2: .line 388
      StackMap locals: int
      StackMap stack:
            aload 0 /* callables */
            iload 2 /* c */
            aaload
            astore 3 /* callable */
        start local 3 // org.jruby.javasupport.ParameterTypes callable
         3: .line 389
            aload 3 /* callable */
            aload 1 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.exactMatch:(Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 4
            aload 3 /* callable */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 3 // org.jruby.javasupport.ParameterTypes callable
         4: .line 387
      StackMap locals:
      StackMap stack:
            iinc 2 /* c */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* c */
            aload 0 /* callables */
            arraylength
            if_icmplt 2
        end local 2 // int c
         6: .line 392
            new java.util.ArrayList
            dup
            aload 0 /* callables */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* retained */
        start local 2 // java.util.ArrayList retained
         7: .line 393
            aload 0 /* callables */
            invokevirtual org.jruby.javasupport.ParameterTypes[].clone:()Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes[]
            astore 3 /* incoming */
        start local 3 // org.jruby.javasupport.ParameterTypes[] incoming
         8: .line 395
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         9: goto 43
        10: .line 396
      StackMap locals: org.jruby.javasupport.ParameterTypes[] org.jruby.runtime.builtin.IRubyObject[] java.util.ArrayList org.jruby.javasupport.ParameterTypes[] int
      StackMap stack:
            aload 2 /* retained */
            invokevirtual java.util.ArrayList.clear:()V
        11: .line 398
            iconst_0
            istore 5 /* c */
        start local 5 // int c
        12: goto 20
        13: .line 399
      StackMap locals: int
      StackMap stack:
            aload 3 /* incoming */
            iload 5 /* c */
            aaload
            astore 6 /* callable */
        start local 6 // org.jruby.javasupport.ParameterTypes callable
        14: .line 400
            aload 6 /* callable */
            ifnonnull 15
            goto 19
        15: .line 402
      StackMap locals: org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 7 /* types */
        start local 7 // java.lang.Class[] types
        16: .line 404
            getstatic org.jruby.java.dispatch.CallableSelector.PRIMITIVABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 7 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 19
        17: .line 405
            aload 2 /* retained */
            aload 6 /* callable */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        18: .line 406
            aload 3 /* incoming */
            iload 5 /* c */
            aconst_null
            aastore
        end local 7 // java.lang.Class[] types
        end local 6 // org.jruby.javasupport.ParameterTypes callable
        19: .line 398
      StackMap locals:
      StackMap stack:
            iinc 5 /* c */ 1
      StackMap locals:
      StackMap stack:
        20: iload 5 /* c */
            aload 3 /* incoming */
            arraylength
            if_icmplt 13
        end local 5 // int c
        21: .line 410
            iconst_0
            istore 5 /* c */
        start local 5 // int c
        22: goto 30
        23: .line 411
      StackMap locals:
      StackMap stack:
            aload 3 /* incoming */
            iload 5 /* c */
            aaload
            astore 6 /* callable */
        start local 6 // org.jruby.javasupport.ParameterTypes callable
        24: .line 412
            aload 6 /* callable */
            ifnonnull 25
            goto 29
        25: .line 414
      StackMap locals: org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 7 /* types */
        start local 7 // java.lang.Class[] types
        26: .line 416
            getstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 7 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 29
        27: .line 417
            aload 2 /* retained */
            aload 6 /* callable */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        28: .line 418
            aload 3 /* incoming */
            iload 5 /* c */
            aconst_null
            aastore
        end local 7 // java.lang.Class[] types
        end local 6 // org.jruby.javasupport.ParameterTypes callable
        29: .line 410
      StackMap locals:
      StackMap stack:
            iinc 5 /* c */ 1
      StackMap locals:
      StackMap stack:
        30: iload 5 /* c */
            aload 3 /* incoming */
            arraylength
            if_icmplt 23
        end local 5 // int c
        31: .line 421
            aload 2 /* retained */
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifeq 41
        32: .line 423
            iconst_0
            istore 5 /* c */
        start local 5 // int c
        33: goto 40
        34: .line 424
      StackMap locals:
      StackMap stack:
            aload 3 /* incoming */
            iload 5 /* c */
            aaload
            astore 6 /* callable */
        start local 6 // org.jruby.javasupport.ParameterTypes callable
        35: .line 425
            aload 6 /* callable */
            ifnonnull 36
            goto 39
        36: .line 427
      StackMap locals: org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 7 /* types */
        start local 7 // java.lang.Class[] types
        37: .line 429
            getstatic org.jruby.java.dispatch.CallableSelector.DUCKABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 7 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 39
        38: .line 430
            aload 2 /* retained */
            aload 6 /* callable */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.lang.Class[] types
        end local 6 // org.jruby.javasupport.ParameterTypes callable
        39: .line 423
      StackMap locals:
      StackMap stack:
            iinc 5 /* c */ 1
      StackMap locals:
      StackMap stack:
        40: iload 5 /* c */
            aload 3 /* incoming */
            arraylength
            if_icmplt 34
        end local 5 // int c
        41: .line 435
      StackMap locals:
      StackMap stack:
            aload 2 /* retained */
            aload 2 /* retained */
            invokevirtual java.util.ArrayList.size:()I
            anewarray org.jruby.javasupport.ParameterTypes
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes[]
            astore 3 /* incoming */
        42: .line 395
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        43: iload 4 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 10
        end local 4 // int i
        44: .line 439
            iconst_0
            istore 4 /* j */
        start local 4 // int j
        45: iconst_0
            istore 5 /* i */
        start local 5 // int i
        46: goto 53
        47: .line 440
      StackMap locals: int
      StackMap stack:
            aload 2 /* retained */
            iload 5 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes
            astore 6 /* callable */
        start local 6 // org.jruby.javasupport.ParameterTypes callable
        48: .line 441
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.isVarArgs:()Z
            ifeq 50
        49: .line 442
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getArity:()I
            aload 1 /* args */
            arraylength
            iconst_1
            isub
            if_icmple 51
            goto 52
        50: .line 445
      StackMap locals: org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 6 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getArity:()I
            aload 1 /* args */
            arraylength
            if_icmpeq 51
            goto 52
        51: .line 447
      StackMap locals:
      StackMap stack:
            aload 2 /* retained */
            iload 4 /* j */
            iinc 4 /* j */ 1
            aload 6 /* callable */
            invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // org.jruby.javasupport.ParameterTypes callable
        52: .line 439
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        53: iload 5 /* i */
            aload 2 /* retained */
            invokevirtual java.util.ArrayList.size:()I
            if_icmplt 47
        end local 5 // int i
        54: .line 450
            iload 4 /* j */
            aload 2 /* retained */
            invokevirtual java.util.ArrayList.size:()I
            if_icmpge 55
            aload 2 /* retained */
            iconst_0
            iload 4 /* j */
            invokevirtual java.util.ArrayList.subList:(II)Ljava/util/List;
            goto 56
      StackMap locals:
      StackMap stack:
        55: aload 2 /* retained */
      StackMap locals:
      StackMap stack: java.util.List
        56: areturn
        end local 4 // int j
        end local 3 // org.jruby.javasupport.ParameterTypes[] incoming
        end local 2 // java.util.ArrayList retained
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes[] callables
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   57     0  callables  [Lorg/jruby/javasupport/ParameterTypes;
            0   57     1       args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     2          c  I
            3    4     3   callable  TT;
            7   57     2   retained  Ljava/util/ArrayList<TT;>;
            8   57     3   incoming  [Lorg/jruby/javasupport/ParameterTypes;
            9   44     4          i  I
           12   21     5          c  I
           14   19     6   callable  Lorg/jruby/javasupport/ParameterTypes;
           16   19     7      types  [Ljava/lang/Class;
           22   31     5          c  I
           24   29     6   callable  Lorg/jruby/javasupport/ParameterTypes;
           26   29     7      types  [Ljava/lang/Class;
           33   41     5          c  I
           35   39     6   callable  Lorg/jruby/javasupport/ParameterTypes;
           37   39     7      types  [Ljava/lang/Class;
           45   57     4          j  I
           46   54     5          i  I
           48   52     6   callable  TT;
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>([TT;[Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/util/List<TT;>;
    MethodParameters:
           Name  Flags
      callables  final
      args       final

  private static int calcExactnessScore(org.jruby.javasupport.ParameterTypes, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes callable
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 454
            aload 0 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* types */
        start local 2 // java.lang.Class[] types
         1: .line 455
            iconst_0
            istore 3 /* count */
        start local 3 // int count
         2: .line 457
            aload 0 /* callable */
            invokeinterface org.jruby.javasupport.ParameterTypes.isVarArgs:()Z
            ifeq 11
         3: .line 462
            aload 2 /* types */
            arraylength
            iconst_1
            isub
            istore 4 /* nonVarargs */
        start local 4 // int nonVarargs
         4: .line 464
            iinc 3 /* count */ 1
         5: .line 467
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 9
         7: .line 468
      StackMap locals: org.jruby.javasupport.ParameterTypes org.jruby.runtime.builtin.IRubyObject[] java.lang.Class[] int int int
      StackMap stack:
            aload 2 /* types */
            iload 5 /* i */
            aaload
            aload 1 /* args */
            iload 5 /* i */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.getJavaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
            if_acmpne 8
            iinc 3 /* count */ 1
         8: .line 467
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            iload 4 /* nonVarargs */
            if_icmpge 16
            iload 5 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 7
        end local 5 // int i
        end local 4 // int nonVarargs
        10: .line 470
            goto 16
        11: .line 472
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        12: goto 15
        13: .line 473
      StackMap locals: int
      StackMap stack:
            aload 2 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.getJavaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
            if_acmpne 14
            iinc 3 /* count */ 1
        14: .line 472
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 4 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 13
        end local 4 // int i
        16: .line 476
      StackMap locals:
      StackMap stack:
            iload 3 /* count */
            ireturn
        end local 3 // int count
        end local 2 // java.lang.Class[] types
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes callable
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0    callable  Lorg/jruby/javasupport/ParameterTypes;
            0   17     1        args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1   17     2       types  [Ljava/lang/Class;
            2   17     3       count  I
            4   10     4  nonVarargs  I
            6   10     5           i  I
           12   16     4           i  I
    MethodParameters:
          Name  Flags
      callable  final
      args      final

  private static boolean exactMatch(org.jruby.javasupport.ParameterTypes, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes paramTypes
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 542
            aload 0 /* paramTypes */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* types */
        start local 2 // java.lang.Class[] types
         1: .line 544
            aload 1 /* args */
            arraylength
            aload 2 /* types */
            arraylength
            if_icmpeq 2
            iconst_0
            ireturn
         2: .line 546
      StackMap locals: java.lang.Class[]
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 547
      StackMap locals: int
      StackMap stack:
            getstatic org.jruby.java.dispatch.CallableSelector.EXACT:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 3 /* i */
            aaload
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 6
         5: .line 548
            iconst_0
            ireturn
         6: .line 546
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* types */
            arraylength
            if_icmplt 4
        end local 3 // int i
         8: .line 551
            iconst_1
            ireturn
        end local 2 // java.lang.Class[] types
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes paramTypes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  paramTypes  Lorg/jruby/javasupport/ParameterTypes;
            0    9     1        args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    9     2       types  [Ljava/lang/Class;
            3    8     3           i  I
    MethodParameters:
            Name  Flags
      paramTypes  
      args        

  private static boolean assignableAndPrimitivable(org.jruby.javasupport.ParameterTypes, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes paramTypes
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 555
            aload 0 /* paramTypes */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* types */
        start local 2 // java.lang.Class[] types
         1: .line 557
            aload 1 /* args */
            arraylength
            aload 2 /* types */
            arraylength
            if_icmpeq 2
            iconst_0
            ireturn
         2: .line 559
      StackMap locals: java.lang.Class[]
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 560
      StackMap locals: int
      StackMap stack:
            getstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 3 /* i */
            aaload
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 5
            getstatic org.jruby.java.dispatch.CallableSelector.PRIMITIVABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 3 /* i */
            aaload
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 6
         5: .line 561
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         6: .line 559
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* types */
            arraylength
            if_icmplt 4
        end local 3 // int i
         8: .line 564
            iconst_1
            ireturn
        end local 2 // java.lang.Class[] types
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes paramTypes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  paramTypes  Lorg/jruby/javasupport/ParameterTypes;
            0    9     1        args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    9     2       types  [Ljava/lang/Class;
            3    8     3           i  I
    MethodParameters:
            Name  Flags
      paramTypes  
      args        

  private static boolean assignableOrDuckable(org.jruby.javasupport.ParameterTypes, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes paramTypes
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 568
            aload 0 /* paramTypes */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* types */
        start local 2 // java.lang.Class[] types
         1: .line 570
            aload 1 /* args */
            arraylength
            aload 2 /* types */
            arraylength
            if_icmpeq 2
            iconst_0
            ireturn
         2: .line 572
      StackMap locals: java.lang.Class[]
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 573
      StackMap locals: int
      StackMap stack:
            getstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 3 /* i */
            aaload
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 6
            getstatic org.jruby.java.dispatch.CallableSelector.DUCKABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 3 /* i */
            aaload
            aload 1 /* args */
            iload 3 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 6
         5: .line 574
            iconst_0
            ireturn
         6: .line 572
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 2 /* types */
            arraylength
            if_icmplt 4
        end local 3 // int i
         8: .line 577
            iconst_1
            ireturn
        end local 2 // java.lang.Class[] types
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes paramTypes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  paramTypes  Lorg/jruby/javasupport/ParameterTypes;
            0    9     1        args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    9     2       types  [Ljava/lang/Class;
            3    8     3           i  I
    MethodParameters:
            Name  Flags
      paramTypes  
      args        

  private static boolean assignableAndPrimitivableWithVarargs(org.jruby.javasupport.ParameterTypes, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.jruby.javasupport.ParameterTypes paramTypes
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 581
            aload 0 /* paramTypes */
            invokeinterface org.jruby.javasupport.ParameterTypes.isVarArgs:()Z
            ifne 1
            iconst_0
            ireturn
         1: .line 583
      StackMap locals:
      StackMap stack:
            aload 0 /* paramTypes */
            invokeinterface org.jruby.javasupport.ParameterTypes.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* types */
        start local 2 // java.lang.Class[] types
         2: .line 586
            aload 1 /* args */
            arraylength
            ifne 4
            aload 2 /* types */
            arraylength
            iconst_1
            if_icmpgt 3
            iconst_1
            ireturn
      StackMap locals: java.lang.Class[]
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 588
      StackMap locals:
      StackMap stack:
            aload 2 /* types */
            arraylength
            iconst_1
            isub
            istore 3 /* last */
        start local 3 // int last
         5: .line 590
            aload 1 /* args */
            arraylength
            iload 3 /* last */
            if_icmpge 6
            iconst_0
            ireturn
         6: .line 591
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 11
         8: .line 592
      StackMap locals: int
      StackMap stack:
            getstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 10
            getstatic org.jruby.java.dispatch.CallableSelector.PRIMITIVABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 2 /* types */
            iload 4 /* i */
            aaload
            aload 1 /* args */
            iload 4 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 10
         9: .line 593
            iconst_0
            ireturn
        10: .line 591
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            iload 3 /* last */
            if_icmplt 8
        end local 4 // int i
        12: .line 597
            aload 2 /* types */
            iload 3 /* last */
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 4 /* varArgType */
        start local 4 // java.lang.Class varArgType
        13: .line 599
            iload 3 /* last */
            istore 5 /* i */
        start local 5 // int i
        14: goto 18
        15: .line 600
      StackMap locals: org.jruby.javasupport.ParameterTypes org.jruby.runtime.builtin.IRubyObject[] java.lang.Class[] int java.lang.Class int
      StackMap stack:
            getstatic org.jruby.java.dispatch.CallableSelector.ASSIGNABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 4 /* varArgType */
            aload 1 /* args */
            iload 5 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 17
            getstatic org.jruby.java.dispatch.CallableSelector.PRIMITIVABLE:Lorg/jruby/java/dispatch/CallableSelector$Matcher;
            aload 4 /* varArgType */
            aload 1 /* args */
            iload 5 /* i */
            aaload
            invokeinterface org.jruby.java.dispatch.CallableSelector$Matcher.match:(Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 17
        16: .line 601
            iconst_0
            ireturn
        17: .line 599
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 5 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 15
        end local 5 // int i
        19: .line 605
            iconst_1
            ireturn
        end local 4 // java.lang.Class varArgType
        end local 3 // int last
        end local 2 // java.lang.Class[] types
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.javasupport.ParameterTypes paramTypes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0  paramTypes  Lorg/jruby/javasupport/ParameterTypes;
            0   20     1        args  [Lorg/jruby/runtime/builtin/IRubyObject;
            2   20     2       types  [Ljava/lang/Class;
            5   20     3        last  I
            7   12     4           i  I
           13   20     4  varArgType  Ljava/lang/Class;
           14   19     5           i  I
    MethodParameters:
            Name  Flags
      paramTypes  
      args        

  private static boolean assignable(java.lang.Class<?>, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 609
            aload 0 /* type */
            aload 1 /* arg */
            invokestatic org.jruby.java.dispatch.CallableSelector.getJavaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
            invokestatic org.jruby.javasupport.JavaClass.assignable:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifne 3
         1: .line 611
            aload 1 /* arg */
            ifnull 2
            aload 0 /* type */
            aload 1 /* arg */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 609
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  type  Ljava/lang/Class<*>;
            0    4     1   arg  Lorg/jruby/runtime/builtin/IRubyObject;
    Signature: (Ljava/lang/Class<*>;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    MethodParameters:
      Name  Flags
      type  
      arg   final

  private static boolean primitivable(java.lang.Class<?>, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 623
            aload 1 /* arg */
            invokestatic org.jruby.java.dispatch.CallableSelector.getJavaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
            astore 2 /* argClass */
        start local 2 // java.lang.Class argClass
         1: .line 624
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 27
         2: .line 628
            aload 0 /* type */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* type */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* type */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* type */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 15
         3: .line 629
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 2 /* argClass */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 14
         4: .line 630
            aload 2 /* argClass */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpeq 14
         5: .line 631
            aload 2 /* argClass */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpeq 14
         6: .line 632
            aload 2 /* argClass */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpeq 14
         7: .line 633
            aload 2 /* argClass */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 14
         8: .line 634
            aload 2 /* argClass */
            ldc Ljava/lang/Long;
            if_acmpeq 14
         9: .line 635
            aload 2 /* argClass */
            ldc Ljava/lang/Byte;
            if_acmpeq 14
        10: .line 636
            aload 2 /* argClass */
            ldc Ljava/lang/Short;
            if_acmpeq 14
        11: .line 637
            aload 2 /* argClass */
            ldc Ljava/lang/Character;
            if_acmpeq 14
        12: .line 638
            aload 2 /* argClass */
            ldc Ljava/lang/Integer;
            if_acmpeq 14
        13: .line 629
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        14: iconst_1
            ireturn
        15: .line 640
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 16
            aload 0 /* type */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 22
        16: .line 641
      StackMap locals:
      StackMap stack:
            aload 2 /* argClass */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 21
        17: .line 642
            aload 2 /* argClass */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 21
        18: .line 643
            aload 2 /* argClass */
            ldc Ljava/lang/Float;
            if_acmpeq 21
        19: .line 644
            aload 2 /* argClass */
            ldc Ljava/lang/Double;
            if_acmpeq 21
        20: .line 641
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        21: iconst_1
            ireturn
        22: .line 646
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 27
        23: .line 647
            aload 2 /* argClass */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpeq 26
        24: .line 648
            aload 2 /* argClass */
            ldc Ljava/lang/Boolean;
            if_acmpeq 26
        25: .line 647
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        26: iconst_1
            ireturn
        27: .line 651
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.lang.Class argClass
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      type  Ljava/lang/Class<*>;
            0   28     1       arg  Lorg/jruby/runtime/builtin/IRubyObject;
            1   28     2  argClass  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    MethodParameters:
      Name  Flags
      type  final
      arg   final

  private static int calcTypePreference(java.lang.Class<?>, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 655
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            istore 2 /* primitive */
        start local 2 // boolean primitive
         1: .line 657
            iload 2 /* primitive */
            ifeq 2
            aload 0 /* type */
            invokestatic org.jruby.util.CodegenUtils.getBoxType:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 0 /* type */
         2: .line 659
      StackMap locals: int
      StackMap stack:
            ldc Ljava/lang/Number;
            aload 0 /* type */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
            ldc Ljava/lang/Character;
            aload 0 /* type */
            if_acmpne 32
         3: .line 660
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyFixnum
            ifeq 12
         4: .line 661
            aload 0 /* type */
            ldc Ljava/lang/Long;
            if_acmpne 5
            bipush 10
            ireturn
         5: .line 662
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Integer;
            if_acmpne 6
            bipush 8
            ireturn
         6: .line 663
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/math/BigInteger;
            if_acmpne 7
            bipush 7
            ireturn
         7: .line 664
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Short;
            if_acmpne 8
            bipush 6
            ireturn
         8: .line 665
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Byte;
            if_acmpne 9
            iconst_4
            ireturn
         9: .line 666
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Float;
            if_acmpne 10
            iconst_3
            ireturn
        10: .line 667
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Double;
            if_acmpne 11
            iconst_2
            ireturn
        11: .line 669
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        12: .line 671
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyBignum
            ifeq 18
        13: .line 672
            aload 0 /* type */
            ldc Ljava/math/BigInteger;
            if_acmpne 14
            bipush 10
            ireturn
        14: .line 673
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Long;
            if_acmpne 15
            iconst_4
            ireturn
        15: .line 677
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Double;
            if_acmpne 16
            bipush 6
            ireturn
        16: .line 678
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Float;
            if_acmpne 17
            iconst_5
            ireturn
        17: .line 680
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        18: .line 682
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyInteger
            ifeq 24
        19: .line 683
            aload 0 /* type */
            ldc Ljava/lang/Long;
            if_acmpne 20
            bipush 10
            ireturn
        20: .line 684
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Integer;
            if_acmpne 21
            bipush 8
            ireturn
        21: .line 687
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Float;
            if_acmpne 22
            iconst_3
            ireturn
        22: .line 688
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Double;
            if_acmpne 23
            iconst_2
            ireturn
        23: .line 690
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        24: .line 692
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyFloat
            ifeq 39
        25: .line 693
            aload 0 /* type */
            ldc Ljava/lang/Double;
            if_acmpne 26
            bipush 10
            ireturn
        26: .line 694
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Float;
            if_acmpne 27
            bipush 8
            ireturn
        27: .line 695
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/math/BigDecimal;
            if_acmpne 28
            bipush 6
            ireturn
        28: .line 696
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Long;
            if_acmpne 29
            iconst_4
            ireturn
        29: .line 697
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Integer;
            if_acmpne 30
            iconst_3
            ireturn
        30: .line 698
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Short;
            if_acmpne 31
            iconst_2
            ireturn
        31: .line 700
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        32: .line 703
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyString
            ifeq 37
        33: .line 704
            aload 0 /* type */
            ldc Ljava/lang/String;
            if_acmpne 34
            bipush 10
            ireturn
        34: .line 705
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc [B
            if_acmpne 35
            bipush 8
            ireturn
        35: .line 706
      StackMap locals:
      StackMap stack:
            ldc Ljava/lang/CharSequence;
            aload 0 /* type */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 36
            bipush 7
            ireturn
        36: .line 707
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc Ljava/lang/Character;
            if_acmpne 39
            iconst_1
            ireturn
        37: .line 709
      StackMap locals:
      StackMap stack:
            aload 1 /* arg */
            instanceof org.jruby.RubyBoolean
            ifeq 39
        38: .line 710
            aload 0 /* type */
            ldc Ljava/lang/Boolean;
            if_acmpne 39
            bipush 10
            ireturn
        39: .line 715
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // boolean primitive
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   40     0       type  Ljava/lang/Class<*>;
            0   40     1        arg  Lorg/jruby/runtime/builtin/IRubyObject;
            1   40     2  primitive  Z
    Signature: (Ljava/lang/Class<*>;Lorg/jruby/runtime/builtin/IRubyObject;)I
    MethodParameters:
      Name  Flags
      type  
      arg   final

  private static boolean duckable(java.lang.Class<?>, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Ljava/lang/Class;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 719
            aload 1 /* arg */
            invokestatic org.jruby.java.dispatch.CallableSelector.getJavaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
            aload 0 /* type */
            invokestatic org.jruby.javasupport.JavaUtil.isDuckTypeConvertable:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject arg
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class<*>;
            0    1     1   arg  Lorg/jruby/runtime/builtin/IRubyObject;
    Signature: (Ljava/lang/Class<*>;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    MethodParameters:
      Name  Flags
      type  final
      arg   final

  private static int argsHashCode(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject a0
         0: .line 723
            bipush 31
            aload 0 /* a0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassOrProcHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            ireturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject a0
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    a0  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      a0    

  private static int argsHashCode(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.builtin.IRubyObject a0
        start local 1 // org.jruby.runtime.builtin.IRubyObject a1
         0: .line 727
            bipush 17
            bipush 31
            aload 0 /* a0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
         1: .line 728
            aload 1 /* a1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassOrProcHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
         2: .line 727
            iadd
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject a1
        end local 0 // org.jruby.runtime.builtin.IRubyObject a0
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    a0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     1    a1  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      a0    
      a1    

  private static int argsHashCode(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.runtime.builtin.IRubyObject a0
        start local 1 // org.jruby.runtime.builtin.IRubyObject a1
        start local 2 // org.jruby.runtime.builtin.IRubyObject a2
         0: .line 732
            bipush 17
            bipush 17
            bipush 31
            aload 0 /* a0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
            aload 1 /* a1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
         1: .line 733
            aload 2 /* a2 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassOrProcHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
         2: .line 732
            iadd
            ireturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject a2
        end local 1 // org.jruby.runtime.builtin.IRubyObject a1
        end local 0 // org.jruby.runtime.builtin.IRubyObject a0
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    a0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     1    a1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     2    a2  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      a0    
      a1    
      a2    

  private static int argsHashCode(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.jruby.runtime.builtin.IRubyObject a0
        start local 1 // org.jruby.runtime.builtin.IRubyObject a1
        start local 2 // org.jruby.runtime.builtin.IRubyObject a2
        start local 3 // org.jruby.runtime.builtin.IRubyObject a3
         0: .line 737
            bipush 17
            bipush 17
            bipush 17
            bipush 31
            aload 0 /* a0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
            aload 1 /* a1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
            aload 2 /* a2 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
         1: .line 738
            aload 3 /* a3 */
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassOrProcHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
         2: .line 737
            iadd
            ireturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject a3
        end local 2 // org.jruby.runtime.builtin.IRubyObject a2
        end local 1 // org.jruby.runtime.builtin.IRubyObject a1
        end local 0 // org.jruby.runtime.builtin.IRubyObject a0
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    a0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     1    a1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     2    a2  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     3    a3  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      a0    
      a1    
      a2    
      a3    

  private static int argsHashCode(org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: ([Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 742
            aload 0 /* args */
            arraylength
            iconst_1
            isub
            istore 1 /* last */
        start local 1 // int last
         1: .line 743
            iload 1 /* last */
            iconst_m1
            if_icmpne 2
            iconst_0
            ireturn
         2: .line 745
      StackMap locals: int
      StackMap stack:
            bipush 31
            istore 2 /* result */
        start local 2 // int result
         3: .line 746
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 747
      StackMap locals: int int
      StackMap stack:
            bipush 17
            iload 2 /* result */
            aload 0 /* args */
            iload 3 /* i */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            imul
            istore 2 /* result */
         6: .line 746
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            iload 1 /* last */
            if_icmplt 5
        end local 3 // int i
         8: .line 750
            iload 2 /* result */
            aload 0 /* args */
            iload 1 /* last */
            aaload
            invokestatic org.jruby.java.dispatch.CallableSelector.javaClassOrProcHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            iadd
            ireturn
        end local 2 // int result
        end local 1 // int last
        end local 0 // org.jruby.runtime.builtin.IRubyObject[] args
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    9     1    last  I
            3    9     2  result  I
            4    8     3       i  I
    MethodParameters:
      Name  Flags
      args  final

  private static int javaClassHashCode(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 754
            aload 0 /* arg */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getJavaClass:()Ljava/lang/Class;
            invokevirtual java.lang.Object.hashCode:()I
            ireturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject arg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   arg  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      arg   final

  private static int javaClassOrProcHashCode(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 758
            aload 0 /* arg */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getJavaClass:()Ljava/lang/Class;
            astore 1 /* javaClass */
        start local 1 // java.lang.Class javaClass
         1: .line 759
            aload 1 /* javaClass */
            ldc Lorg/jruby/RubyProc;
            if_acmpne 2
            bipush 11
            aload 0 /* arg */
            invokestatic org.jruby.java.dispatch.CallableSelector.procArityValue:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            imul
            goto 3
      StackMap locals: java.lang.Class
      StackMap stack:
         2: aload 1 /* javaClass */
            invokevirtual java.lang.Object.hashCode:()I
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // java.lang.Class javaClass
        end local 0 // org.jruby.runtime.builtin.IRubyObject arg
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0        arg  Lorg/jruby/runtime/builtin/IRubyObject;
            1    4     1  javaClass  Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      arg   final

  private static int procArityValue(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject proc
         0: .line 763
            aload 0 /* proc */
            checkcast org.jruby.RubyProc
            invokevirtual org.jruby.RubyProc.getBlock:()Lorg/jruby/runtime/Block;
            invokevirtual org.jruby.runtime.Block.getSignature:()Lorg/jruby/runtime/Signature;
            invokevirtual org.jruby.runtime.Signature.arityValue:()I
            ireturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject proc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  proc  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
      Name  Flags
      proc  final

  private static java.lang.Class<?> getJavaClass(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 767
            aload 0 /* arg */
            ifnull 1
            aload 0 /* arg */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getJavaClass:()Ljava/lang/Class;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic java.lang.Void.TYPE:Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         2: areturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject arg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   arg  Lorg/jruby/runtime/builtin/IRubyObject;
    Signature: (Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      arg   final

  public static <T extends org.jruby.javasupport.ParameterTypes> org.jruby.util.collections.IntHashMap<T> newCallableCache();
    descriptor: ()Lorg/jruby/util/collections/IntHashMap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 788
            new org.jruby.util.collections.IntHashMap
            dup
            bipush 8
            invokespecial org.jruby.util.collections.IntHashMap.<init>:(I)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T::Lorg/jruby/javasupport/ParameterTypes;>()Lorg/jruby/util/collections/IntHashMap<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static org.jruby.javasupport.ParameterTypes matchingCallableArityN(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.ParameterTypes[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.ParameterTypes[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 794
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:([Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 795
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.ParameterTypes
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.ParameterTypes method
         2: .line 796
            aload 5 /* method */
            ifnonnull 5
         3: .line 797
            aload 0 /* runtime */
            aload 2 /* methods */
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            astore 5 /* method */
         4: .line 798
            aload 5 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 800
      StackMap locals: int org.jruby.javasupport.ParameterTypes
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.ParameterTypes method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 2 // org.jruby.javasupport.ParameterTypes[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/ParameterTypes;
            0    6     3           args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  Lorg/jruby/javasupport/ParameterTypes;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      args     

  public static org.jruby.javasupport.JavaCallable matchingCallableArityN(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.JavaCallable[], org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/JavaCallable;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 809
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:([Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 810
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.JavaCallable method
         2: .line 811
            aload 5 /* method */
            ifnonnull 5
         3: .line 812
            aload 0 /* runtime */
            aload 2 /* methods */
            aload 3 /* args */
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
         4: .line 813
            aload 5 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 815
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.JavaCallable method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  Lorg/jruby/javasupport/JavaCallable;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      args     

  public static org.jruby.javasupport.JavaCallable matchingCallableArityOne(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.JavaCallable[], org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
         0: .line 820
            aload 3 /* arg0 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* signatureCode */
        start local 4 // int signatureCode
         1: .line 821
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
        start local 5 // org.jruby.javasupport.JavaCallable method
         2: .line 822
            aload 5 /* method */
            ifnonnull 5
         3: .line 823
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 5 /* method */
         4: .line 824
            aload 5 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 4 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 826
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 5 /* method */
            areturn
        end local 5 // org.jruby.javasupport.JavaCallable method
        end local 4 // int signatureCode
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     4  signatureCode  I
            2    6     5         method  Lorg/jruby/javasupport/JavaCallable;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     

  public static org.jruby.javasupport.JavaCallable matchingCallableArityTwo(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.JavaCallable[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
         0: .line 831
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 5 /* signatureCode */
        start local 5 // int signatureCode
         1: .line 832
            aload 1 /* cache */
            iload 5 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.JavaCallable
            astore 6 /* method */
        start local 6 // org.jruby.javasupport.JavaCallable method
         2: .line 833
            aload 6 /* method */
            ifnonnull 5
         3: .line 834
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_2
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 6 /* method */
         4: .line 835
            aload 6 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 5 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 837
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 6 /* method */
            areturn
        end local 6 // org.jruby.javasupport.JavaCallable method
        end local 5 // int signatureCode
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     5  signatureCode  I
            2    6     6         method  Lorg/jruby/javasupport/JavaCallable;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     

  public static org.jruby.javasupport.JavaCallable matchingCallableArityThree(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.JavaCallable[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
         0: .line 842
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 6 /* signatureCode */
        start local 6 // int signatureCode
         1: .line 843
            aload 1 /* cache */
            iload 6 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.JavaCallable
            astore 7 /* method */
        start local 7 // org.jruby.javasupport.JavaCallable method
         2: .line 844
            aload 7 /* method */
            ifnonnull 5
         3: .line 845
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_3
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 7 /* method */
         4: .line 846
            aload 7 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 6 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 7 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 848
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 7 /* method */
            areturn
        end local 7 // org.jruby.javasupport.JavaCallable method
        end local 6 // int signatureCode
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     6  signatureCode  I
            2    6     7         method  Lorg/jruby/javasupport/JavaCallable;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     
      arg2     

  public static org.jruby.javasupport.JavaCallable matchingCallableArityFour(org.jruby.Ruby, java.util.Map, org.jruby.javasupport.JavaCallable[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;[Lorg/jruby/javasupport/JavaCallable;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/JavaCallable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map cache
        start local 2 // org.jruby.javasupport.JavaCallable[] methods
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg3
         0: .line 853
            aload 3 /* arg0 */
            aload 4 /* arg1 */
            aload 5 /* arg2 */
            aload 6 /* arg3 */
            invokestatic org.jruby.java.dispatch.CallableSelector.argsHashCode:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 7 /* signatureCode */
        start local 7 // int signatureCode
         1: .line 854
            aload 1 /* cache */
            iload 7 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.javasupport.JavaCallable
            astore 8 /* method */
        start local 8 // org.jruby.javasupport.JavaCallable method
         2: .line 855
            aload 8 /* method */
            ifnonnull 5
         3: .line 856
            aload 0 /* runtime */
            aload 2 /* methods */
            iconst_4
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 3 /* arg0 */
            aastore
            dup
            iconst_1
            aload 4 /* arg1 */
            aastore
            dup
            iconst_2
            aload 5 /* arg2 */
            aastore
            dup
            iconst_3
            aload 6 /* arg3 */
            aastore
            invokestatic org.jruby.java.dispatch.CallableSelector.findMatchingCallableForArgs:(Lorg/jruby/Ruby;[Lorg/jruby/javasupport/ParameterTypes;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/javasupport/ParameterTypes;
            checkcast org.jruby.javasupport.JavaCallable
            astore 8 /* method */
         4: .line 857
            aload 8 /* method */
            ifnull 5
            aload 1 /* cache */
            iload 7 /* signatureCode */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 8 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 859
      StackMap locals: int org.jruby.javasupport.JavaCallable
      StackMap stack:
            aload 8 /* method */
            areturn
        end local 8 // org.jruby.javasupport.JavaCallable method
        end local 7 // int signatureCode
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg3
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 2 // org.jruby.javasupport.JavaCallable[] methods
        end local 1 // java.util.Map cache
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        runtime  Lorg/jruby/Ruby;
            0    6     1          cache  Ljava/util/Map;
            0    6     2        methods  [Lorg/jruby/javasupport/JavaCallable;
            0    6     3           arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     4           arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     5           arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            0    6     6           arg3  Lorg/jruby/runtime/builtin/IRubyObject;
            1    6     7  signatureCode  I
            2    6     8         method  Lorg/jruby/javasupport/JavaCallable;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      cache    
      methods  
      arg0     
      arg1     
      arg2     
      arg3     
}
SourceFile: "CallableSelector.java"
NestMembers:
  org.jruby.java.dispatch.CallableSelector$1  org.jruby.java.dispatch.CallableSelector$2  org.jruby.java.dispatch.CallableSelector$3  org.jruby.java.dispatch.CallableSelector$4  org.jruby.java.dispatch.CallableSelector$5  org.jruby.java.dispatch.CallableSelector$6  org.jruby.java.dispatch.CallableSelector$7  org.jruby.java.dispatch.CallableSelector$8  org.jruby.java.dispatch.CallableSelector$CallableAcceptor  org.jruby.java.dispatch.CallableSelector$CallableCache  org.jruby.java.dispatch.CallableSelector$Matcher
InnerClasses:
  org.jruby.java.dispatch.CallableSelector$1
  org.jruby.java.dispatch.CallableSelector$2
  org.jruby.java.dispatch.CallableSelector$3
  org.jruby.java.dispatch.CallableSelector$4
  org.jruby.java.dispatch.CallableSelector$5
  org.jruby.java.dispatch.CallableSelector$6
  org.jruby.java.dispatch.CallableSelector$7
  org.jruby.java.dispatch.CallableSelector$8
  private abstract CallableAcceptor = org.jruby.java.dispatch.CallableSelector$CallableAcceptor of org.jruby.java.dispatch.CallableSelector
  public abstract CallableCache = org.jruby.java.dispatch.CallableSelector$CallableCache of org.jruby.java.dispatch.CallableSelector
  private abstract Matcher = org.jruby.java.dispatch.CallableSelector$Matcher of org.jruby.java.dispatch.CallableSelector