public abstract class org.jruby.ir.targets.InvokeSite extends java.lang.invoke.MutableCallSite
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jruby.ir.targets.InvokeSite
  super_class: java.lang.invoke.MutableCallSite
{
  private static final org.jruby.util.log.Logger LOG;
    descriptor: Lorg/jruby/util/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean LOG_BINDING;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.concurrent.atomic.AtomicLong SITE_ID;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  final com.headius.invokebinder.Signature signature;
    descriptor: Lcom/headius/invokebinder/Signature;
    flags: (0x0010) ACC_FINAL

  final com.headius.invokebinder.Signature fullSignature;
    descriptor: Lcom/headius/invokebinder/Signature;
    flags: (0x0010) ACC_FINAL

  final int arity;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  protected final java.lang.String methodName;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  final java.lang.invoke.MethodHandle fallback;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x0010) ACC_FINAL

  private final org.jruby.ir.targets.SiteTracker tracker;
    descriptor: Lorg/jruby/ir/targets/SiteTracker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long siteID;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int argOffset;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final java.lang.String file;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int line;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private boolean boundOnce;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean literalClosure;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  org.jruby.runtime.callsite.CacheEntry cache;
    descriptor: Lorg/jruby/runtime/callsite/CacheEntry;
    flags: (0x0000) 

  public final org.jruby.runtime.CallType callType;
    descriptor: Lorg/jruby/runtime/CallType;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  private static final java.lang.invoke.MethodHandles$Lookup LOOKUP;
    descriptor: Ljava/lang/invoke/MethodHandles$Lookup;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.invoke.MethodHandle ESCAPE_BLOCK;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<com.headius.invokebinder.Signature, java.lang.invoke.MethodHandle> BLOCK_ESCAPES;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/headius/invokebinder/Signature;Ljava/lang/invoke/MethodHandle;>;

  public static final java.lang.invoke.MethodHandle NEGATE;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final java.lang.invoke.MethodHandle TEST_CLASS;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 55
            ldc Lorg/jruby/ir/targets/InvokeSite;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.jruby.ir.targets.InvokeSite.$assertionsDisabled:Z
         3: .line 57
            ldc Lorg/jruby/ir/targets/InvokeSite;
            invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
            putstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
         4: .line 59
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 5
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            iconst_1
            invokeinterface org.jruby.util.log.Logger.setDebugEnable:(Z)V
         5: .line 61
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
            putstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
         6: .line 63
            new java.util.concurrent.atomic.AtomicLong
            dup
            lconst_1
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putstatic org.jruby.ir.targets.InvokeSite.SITE_ID:Ljava/util/concurrent/atomic/AtomicLong;
         7: .line 186
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            putstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
         8: .line 187
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            iconst_0
            anewarray java.lang.Class
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "escape"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
            putstatic org.jruby.ir.targets.InvokeSite.ESCAPE_BLOCK:Ljava/lang/invoke/MethodHandle;
         9: .line 188
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
            putstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
        10: .line 493
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/jruby/RubyNil;
            aastore
            dup
            iconst_1
            ldc Lorg/jruby/RubyBoolean$True;
            aastore
            dup
            iconst_2
            ldc Lorg/jruby/RubyBoolean$False;
            aastore
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Lorg/jruby/ir/targets/InvokeSite;
            ldc "negate"
            invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
            putstatic org.jruby.ir.targets.InvokeSite.NEGATE:Ljava/lang/invoke/MethodHandle;
        11: .line 765
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Class;
            aastore
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        12: .line 766
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Lorg/jruby/ir/targets/InvokeSite;
            ldc "testClass"
            invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        13: .line 764
            putstatic org.jruby.ir.targets.InvokeSite.TEST_CLASS:Ljava/lang/invoke/MethodHandle;
        14: .line 766
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.String name();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.targets.InvokeSite this
         0: .line 80
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            areturn
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/targets/InvokeSite;

  public void <init>(java.lang.invoke.MethodType, java.lang.String, org.jruby.runtime.CallType, java.lang.String, int);
    descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // java.lang.invoke.MethodType type
        start local 2 // java.lang.String name
        start local 3 // org.jruby.runtime.CallType callType
        start local 4 // java.lang.String file
        start local 5 // int line
         0: .line 86
            aload 0 /* this */
            aload 1 /* type */
            aload 2 /* name */
            aload 3 /* callType */
            iconst_0
            aload 4 /* file */
            iload 5 /* line */
            invokespecial org.jruby.ir.targets.InvokeSite.<init>:(Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;ZLjava/lang/String;I)V
         1: .line 87
            return
        end local 5 // int line
        end local 4 // java.lang.String file
        end local 3 // org.jruby.runtime.CallType callType
        end local 2 // java.lang.String name
        end local 1 // java.lang.invoke.MethodType type
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/jruby/ir/targets/InvokeSite;
            0    2     1      type  Ljava/lang/invoke/MethodType;
            0    2     2      name  Ljava/lang/String;
            0    2     3  callType  Lorg/jruby/runtime/CallType;
            0    2     4      file  Ljava/lang/String;
            0    2     5      line  I
    MethodParameters:
          Name  Flags
      type      
      name      
      callType  
      file      
      line      

  public void <init>(java.lang.invoke.MethodType, java.lang.String, org.jruby.runtime.CallType, boolean, java.lang.String, int);
    descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;ZLjava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=7
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // java.lang.invoke.MethodType type
        start local 2 // java.lang.String name
        start local 3 // org.jruby.runtime.CallType callType
        start local 4 // boolean literalClosure
        start local 5 // java.lang.String file
        start local 6 // int line
         0: .line 90
            aload 0 /* this */
            aload 1 /* type */
            invokespecial java.lang.invoke.MutableCallSite.<init>:(Ljava/lang/invoke/MethodType;)V
         1: .line 70
            aload 0 /* this */
            new org.jruby.ir.targets.SiteTracker
            dup
            invokespecial org.jruby.ir.targets.SiteTracker.<init>:()V
            putfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
         2: .line 71
            aload 0 /* this */
            getstatic org.jruby.ir.targets.InvokeSite.SITE_ID:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.getAndIncrement:()J
            putfield org.jruby.ir.targets.InvokeSite.siteID:J
         3: .line 77
            aload 0 /* this */
            getstatic org.jruby.runtime.callsite.CacheEntry.NULL_CACHE:Lorg/jruby/runtime/callsite/CacheEntry;
            putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
         4: .line 91
            aload 0 /* this */
            aload 2 /* name */
            putfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
         5: .line 92
            aload 0 /* this */
            aload 3 /* callType */
            putfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
         6: .line 93
            aload 0 /* this */
            iload 4 /* literalClosure */
            putfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
         7: .line 94
            aload 0 /* this */
            aload 5 /* file */
            putfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
         8: .line 95
            aload 0 /* this */
            iload 6 /* line */
            putfield org.jruby.ir.targets.InvokeSite.line:I
         9: .line 99
            aload 3 /* callType */
            getstatic org.jruby.runtime.CallType.SUPER:Lorg/jruby/runtime/CallType;
            if_acmpne 13
        10: .line 101
            getstatic org.jruby.runtime.invokedynamic.JRubyCallSite.STANDARD_SUPER_SIG:Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        start local 7 // com.headius.invokebinder.Signature startSig
        11: .line 102
            aload 0 /* this */
            iconst_4
            putfield org.jruby.ir.targets.InvokeSite.argOffset:I
        12: .line 103
            goto 15
        end local 7 // com.headius.invokebinder.Signature startSig
        13: .line 104
      StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodType java.lang.String org.jruby.runtime.CallType int java.lang.String int
      StackMap stack:
            getstatic org.jruby.runtime.invokedynamic.JRubyCallSite.STANDARD_SITE_SIG:Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        start local 7 // com.headius.invokebinder.Signature startSig
        14: .line 105
            aload 0 /* this */
            iconst_3
            putfield org.jruby.ir.targets.InvokeSite.argOffset:I
        15: .line 109
      StackMap locals: com.headius.invokebinder.Signature
      StackMap stack:
            aload 1 /* type */
            aload 1 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            isub
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            if_acmpne 29
        16: .line 110
            aload 1 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.argOffset:I
            iconst_1
            iadd
            isub
            istore 8 /* arity */
        start local 8 // int arity
        17: .line 112
            iload 8 /* arity */
            iconst_1
            if_icmpne 21
            aload 1 /* type */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.argOffset:I
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            ldc [Lorg/jruby/runtime/builtin/IRubyObject;
            if_acmpne 21
        18: .line 113
            iconst_m1
            istore 8 /* arity */
        19: .line 114
            aload 7 /* startSig */
            ldc "args"
            ldc [Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        20: .line 115
            goto 26
        21: .line 116
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        22: goto 25
        23: .line 117
      StackMap locals: int
      StackMap stack:
            aload 7 /* startSig */
            new java.lang.StringBuilder
            dup
            ldc "arg"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        24: .line 116
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        25: iload 9 /* i */
            iload 8 /* arity */
            if_icmplt 23
        end local 9 // int i
        26: .line 120
      StackMap locals:
      StackMap stack:
            aload 7 /* startSig */
            ldc "block"
            ldc Lorg/jruby/runtime/Block;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        27: .line 121
            aload 0 /* this */
            aload 0 /* this */
            aload 7 /* startSig */
            dup_x1
            putfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            putfield org.jruby.ir.targets.InvokeSite.fullSignature:Lcom/headius/invokebinder/Signature;
        28: .line 122
            goto 41
        end local 8 // int arity
        29: .line 123
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.argOffset:I
            isub
            istore 8 /* arity */
        start local 8 // int arity
        30: .line 125
            iload 8 /* arity */
            iconst_1
            if_icmpne 34
            aload 1 /* type */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.argOffset:I
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            ldc [Lorg/jruby/runtime/builtin/IRubyObject;
            if_acmpne 34
        31: .line 126
            iconst_m1
            istore 8 /* arity */
        32: .line 127
            aload 7 /* startSig */
            ldc "args"
            ldc [Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        33: .line 128
            goto 39
        34: .line 129
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        35: goto 38
        36: .line 130
      StackMap locals: int
      StackMap stack:
            aload 7 /* startSig */
            new java.lang.StringBuilder
            dup
            ldc "arg"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 7 /* startSig */
        37: .line 129
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        38: iload 9 /* i */
            iload 8 /* arity */
            if_icmplt 36
        end local 9 // int i
        39: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* startSig */
            putfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
        40: .line 134
            aload 0 /* this */
            aload 7 /* startSig */
            ldc "block"
            ldc Lorg/jruby/runtime/Block;
            invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            putfield org.jruby.ir.targets.InvokeSite.fullSignature:Lcom/headius/invokebinder/Signature;
        41: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 8 /* arity */
            putfield org.jruby.ir.targets.InvokeSite.arity:I
        42: .line 139
            aload 0 /* this */
            aload 0 /* this */
            iconst_1
            invokevirtual org.jruby.ir.targets.InvokeSite.prepareBinder:(Z)Lcom/headius/invokebinder/Binder;
            getstatic org.jruby.ir.targets.Bootstrap.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "invoke"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
            putfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
        43: .line 140
            return
        end local 8 // int arity
        end local 7 // com.headius.invokebinder.Signature startSig
        end local 6 // int line
        end local 5 // java.lang.String file
        end local 4 // boolean literalClosure
        end local 3 // org.jruby.runtime.CallType callType
        end local 2 // java.lang.String name
        end local 1 // java.lang.invoke.MethodType type
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   44     0            this  Lorg/jruby/ir/targets/InvokeSite;
            0   44     1            type  Ljava/lang/invoke/MethodType;
            0   44     2            name  Ljava/lang/String;
            0   44     3        callType  Lorg/jruby/runtime/CallType;
            0   44     4  literalClosure  Z
            0   44     5            file  Ljava/lang/String;
            0   44     6            line  I
           11   13     7        startSig  Lcom/headius/invokebinder/Signature;
           14   44     7        startSig  Lcom/headius/invokebinder/Signature;
           17   29     8           arity  I
           30   44     8           arity  I
           22   26     9               i  I
           35   39     9               i  I
    MethodParameters:
                Name  Flags
      type            
      name            
      callType        
      literalClosure  
      file            
      line            

  public static java.lang.invoke.CallSite bootstrap(org.jruby.ir.targets.InvokeSite, java.lang.invoke.MethodHandles$Lookup);
    descriptor: (Lorg/jruby/ir/targets/InvokeSite;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/CallSite;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite site
        start local 1 // java.lang.invoke.MethodHandles$Lookup lookup
         0: .line 143
            aload 0 /* site */
            aload 0 /* site */
            getfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
            invokevirtual org.jruby.ir.targets.InvokeSite.setInitialTarget:(Ljava/lang/invoke/MethodHandle;)V
         1: .line 145
            aload 0 /* site */
            areturn
        end local 1 // java.lang.invoke.MethodHandles$Lookup lookup
        end local 0 // org.jruby.ir.targets.InvokeSite site
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    site  Lorg/jruby/ir/targets/InvokeSite;
            0    2     1  lookup  Ljava/lang/invoke/MethodHandles$Lookup;
    MethodParameters:
        Name  Flags
      site    
      lookup  

  public org.jruby.runtime.builtin.IRubyObject invoke(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=13, args_size=6
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.builtin.IRubyObject[] args
        start local 5 // org.jruby.runtime.Block block
         0: .line 149
            aload 1 /* context */
            aload 3 /* self */
            invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            astore 6 /* selfClass */
        start local 6 // org.jruby.RubyClass selfClass
         1: .line 150
            aload 6 /* selfClass */
            invokevirtual org.jruby.RubyClass.getInvalidator:()Lorg/jruby/runtime/opto/Invalidator;
            invokeinterface org.jruby.runtime.opto.Invalidator.getData:()Ljava/lang/Object;
            checkcast java.lang.invoke.SwitchPoint
            astore 7 /* switchPoint */
        start local 7 // java.lang.invoke.SwitchPoint switchPoint
         2: .line 151
            aload 6 /* selfClass */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
            astore 8 /* entry */
        start local 8 // org.jruby.runtime.callsite.CacheEntry entry
         3: .line 152
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 9 /* method */
        start local 9 // org.jruby.internal.runtime.methods.DynamicMethod method
         4: .line 154
            aload 0 /* this */
            aload 8 /* entry */
            aload 2 /* caller */
            invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 11
         5: .line 156
            aload 0 /* this */
            aload 6 /* selfClass */
            invokevirtual org.jruby.ir.targets.InvokeSite.testThresholds:(Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            if_acmpne 9
         6: .line 157
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.logFail:()V
         7: .line 158
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.bindToFail:()Ljava/lang/invoke/MethodHandle;
            pop
         8: .line 159
            goto 10
         9: .line 160
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject[] org.jruby.runtime.Block org.jruby.RubyClass java.lang.invoke.SwitchPoint org.jruby.runtime.callsite.CacheEntry org.jruby.internal.runtime.methods.DynamicMethod
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.logMethodMissing:()V
        10: .line 162
      StackMap locals:
      StackMap stack:
            aload 8 /* entry */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
            aload 1 /* context */
            aload 3 /* self */
            aload 6 /* selfClass */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            aload 4 /* args */
            aload 5 /* block */
            invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        11: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* self */
            aload 8 /* entry */
            invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 10 /* mh */
        start local 10 // java.lang.invoke.MethodHandle mh
        12: .line 167
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 17
        13: .line 168
            aload 10 /* mh */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
        14: .line 169
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokestatic org.jruby.ir.targets.InvokeSite.getBlockEscape:(Lcom/headius/invokebinder/Signature;)Ljava/lang/invoke/MethodHandle;
            invokevirtual com.headius.invokebinder.Binder.tryFinally:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
        15: .line 170
            aload 10 /* mh */
            invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
        16: .line 168
            astore 10 /* mh */
        17: .line 173
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            aload 0 /* this */
            aload 10 /* mh */
            aload 3 /* self */
            aload 6 /* selfClass */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 7 /* switchPoint */
            invokevirtual org.jruby.ir.targets.InvokeSite.updateInvocationTarget:(Ljava/lang/invoke/MethodHandle;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Lorg/jruby/internal/runtime/methods/DynamicMethod;Ljava/lang/invoke/SwitchPoint;)Ljava/lang/invoke/MethodHandle;
            pop
        18: .line 175
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 25
        19: .line 177
            aload 9 /* method */
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            aload 4 /* args */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 12
        20: .line 179
            aload 5 /* block */
            invokevirtual org.jruby.runtime.Block.escape:()V
        21: .line 177
            aload 12
            areturn
        22: .line 178
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 11
        23: .line 179
            aload 5 /* block */
            invokevirtual org.jruby.runtime.Block.escape:()V
        24: .line 180
            aload 11
            athrow
        25: .line 183
      StackMap locals:
      StackMap stack:
            aload 9 /* method */
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            aload 4 /* args */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 10 // java.lang.invoke.MethodHandle mh
        end local 9 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 8 // org.jruby.runtime.callsite.CacheEntry entry
        end local 7 // java.lang.invoke.SwitchPoint switchPoint
        end local 6 // org.jruby.RubyClass selfClass
        end local 5 // org.jruby.runtime.Block block
        end local 4 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   26     0         this  Lorg/jruby/ir/targets/InvokeSite;
            0   26     1      context  Lorg/jruby/runtime/ThreadContext;
            0   26     2       caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0   26     3         self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   26     4         args  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   26     5        block  Lorg/jruby/runtime/Block;
            1   26     6    selfClass  Lorg/jruby/RubyClass;
            2   26     7  switchPoint  Ljava/lang/invoke/SwitchPoint;
            3   26     8        entry  Lorg/jruby/runtime/callsite/CacheEntry;
            4   26     9       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
           12   26    10           mh  Ljava/lang/invoke/MethodHandle;
      Exception table:
        from    to  target  type
          19    20      22  any
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      args     
      block    

  private static java.lang.invoke.MethodHandle getBlockEscape(com.headius.invokebinder.Signature);
    descriptor: (Lcom/headius/invokebinder/Signature;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.headius.invokebinder.Signature signature
         0: .line 191
            aload 0 /* signature */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            invokevirtual com.headius.invokebinder.Signature.changeReturn:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            astore 1 /* voidSignature */
        start local 1 // com.headius.invokebinder.Signature voidSignature
         1: .line 192
            getstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
            aload 1 /* voidSignature */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.invoke.MethodHandle
            astore 2 /* escape */
        start local 2 // java.lang.invoke.MethodHandle escape
         2: .line 193
            aload 2 /* escape */
            ifnonnull 9
         3: .line 194
            aload 1 /* voidSignature */
            invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
         4: .line 195
            ldc "block"
            aastore
            invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
         5: .line 196
            getstatic org.jruby.ir.targets.InvokeSite.ESCAPE_BLOCK:Ljava/lang/invoke/MethodHandle;
            invokevirtual com.headius.invokebinder.SmartBinder.invoke:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartHandle;
         6: .line 197
            invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
         7: .line 194
            astore 2 /* escape */
         8: .line 198
            getstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
            aload 1 /* voidSignature */
            aload 2 /* escape */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 200
      StackMap locals: com.headius.invokebinder.Signature java.lang.invoke.MethodHandle
      StackMap stack:
            aload 2 /* escape */
            areturn
        end local 2 // java.lang.invoke.MethodHandle escape
        end local 1 // com.headius.invokebinder.Signature voidSignature
        end local 0 // com.headius.invokebinder.Signature signature
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0      signature  Lcom/headius/invokebinder/Signature;
            1   10     1  voidSignature  Lcom/headius/invokebinder/Signature;
            2   10     2         escape  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
           Name  Flags
      signature  

  public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=9, args_size=6
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.builtin.IRubyObject[] args
        start local 5 // org.jruby.runtime.Block block
         0: .line 207
            aload 1 /* context */
            aload 3 /* self */
            invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            astore 6 /* selfClass */
        start local 6 // org.jruby.RubyClass selfClass
         1: .line 208
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
         2: .line 209
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
            astore 8 /* entry */
        start local 8 // org.jruby.runtime.callsite.CacheEntry entry
         3: .line 211
            aload 8 /* entry */
            aload 6 /* selfClass */
            invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
            ifeq 5
         4: .line 212
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 7 /* name */
            aload 4 /* args */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         5: .line 215
      StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
      StackMap stack:
            aload 6 /* selfClass */
            aload 7 /* name */
            invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
            astore 8 /* entry */
         6: .line 217
            aload 0 /* this */
            aload 8 /* entry */
            aload 2 /* caller */
            invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 8
         7: .line 218
            aload 8 /* entry */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
            aload 1 /* context */
            aload 3 /* self */
            aload 6 /* selfClass */
            aload 7 /* name */
            aload 4 /* args */
            aload 5 /* block */
            invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         8: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* entry */
            putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
         9: .line 223
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 7 /* name */
            aload 4 /* args */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 8 // org.jruby.runtime.callsite.CacheEntry entry
        end local 7 // java.lang.String name
        end local 6 // org.jruby.RubyClass selfClass
        end local 5 // org.jruby.runtime.Block block
        end local 4 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/jruby/ir/targets/InvokeSite;
            0   10     1    context  Lorg/jruby/runtime/ThreadContext;
            0   10     2     caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     4       args  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     5      block  Lorg/jruby/runtime/Block;
            1   10     6  selfClass  Lorg/jruby/RubyClass;
            2   10     7       name  Ljava/lang/String;
            3   10     8      entry  Lorg/jruby/runtime/callsite/CacheEntry;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      args     
      block    

  public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.Block block
         0: .line 230
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* caller */
            aload 3 /* self */
            getstatic org.jruby.runtime.builtin.IRubyObject.NULL_ARRAY:[Lorg/jruby/runtime/builtin/IRubyObject;
            aload 4 /* block */
            invokevirtual org.jruby.ir.targets.InvokeSite.fail:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 4 // org.jruby.runtime.Block block
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ir/targets/InvokeSite;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2   caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     3     self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4    block  Lorg/jruby/runtime/Block;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      block    

  public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=9, args_size=6
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 5 // org.jruby.runtime.Block block
         0: .line 237
            aload 1 /* context */
            aload 3 /* self */
            invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            astore 6 /* selfClass */
        start local 6 // org.jruby.RubyClass selfClass
         1: .line 238
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
         2: .line 239
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
            astore 8 /* entry */
        start local 8 // org.jruby.runtime.callsite.CacheEntry entry
         3: .line 241
            aload 8 /* entry */
            aload 6 /* selfClass */
            invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
            ifeq 5
         4: .line 242
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 7 /* name */
            aload 4 /* arg0 */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         5: .line 245
      StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
      StackMap stack:
            aload 6 /* selfClass */
            aload 7 /* name */
            invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
            astore 8 /* entry */
         6: .line 247
            aload 0 /* this */
            aload 8 /* entry */
            aload 2 /* caller */
            invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 8
         7: .line 248
            aload 8 /* entry */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
            aload 1 /* context */
            aload 3 /* self */
            aload 6 /* selfClass */
            aload 7 /* name */
            aload 4 /* arg0 */
            aload 5 /* block */
            invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         8: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* entry */
            putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
         9: .line 253
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 7 /* name */
            aload 4 /* arg0 */
            aload 5 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 8 // org.jruby.runtime.callsite.CacheEntry entry
        end local 7 // java.lang.String name
        end local 6 // org.jruby.RubyClass selfClass
        end local 5 // org.jruby.runtime.Block block
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/jruby/ir/targets/InvokeSite;
            0   10     1    context  Lorg/jruby/runtime/ThreadContext;
            0   10     2     caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     4       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     5      block  Lorg/jruby/runtime/Block;
            1   10     6  selfClass  Lorg/jruby/RubyClass;
            2   10     7       name  Ljava/lang/String;
            3   10     8      entry  Lorg/jruby/runtime/callsite/CacheEntry;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      arg0     
      block    

  public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=10, args_size=7
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 6 // org.jruby.runtime.Block block
         0: .line 260
            aload 1 /* context */
            aload 3 /* self */
            invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            astore 7 /* selfClass */
        start local 7 // org.jruby.RubyClass selfClass
         1: .line 261
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            astore 8 /* name */
        start local 8 // java.lang.String name
         2: .line 262
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
            astore 9 /* entry */
        start local 9 // org.jruby.runtime.callsite.CacheEntry entry
         3: .line 264
            aload 9 /* entry */
            aload 7 /* selfClass */
            invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
            ifeq 5
         4: .line 265
            aload 9 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 9 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 8 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         5: .line 268
      StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
      StackMap stack:
            aload 7 /* selfClass */
            aload 8 /* name */
            invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
            astore 9 /* entry */
         6: .line 270
            aload 0 /* this */
            aload 9 /* entry */
            aload 2 /* caller */
            invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 8
         7: .line 271
            aload 9 /* entry */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
            aload 1 /* context */
            aload 3 /* self */
            aload 7 /* selfClass */
            aload 8 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* block */
            invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         8: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 9 /* entry */
            putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
         9: .line 276
            aload 9 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 9 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 8 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 9 // org.jruby.runtime.callsite.CacheEntry entry
        end local 8 // java.lang.String name
        end local 7 // org.jruby.RubyClass selfClass
        end local 6 // org.jruby.runtime.Block block
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/jruby/ir/targets/InvokeSite;
            0   10     1    context  Lorg/jruby/runtime/ThreadContext;
            0   10     2     caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     4       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     5       arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     6      block  Lorg/jruby/runtime/Block;
            1   10     7  selfClass  Lorg/jruby/RubyClass;
            2   10     8       name  Ljava/lang/String;
            3   10     9      entry  Lorg/jruby/runtime/callsite/CacheEntry;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      arg0     
      arg1     
      block    

  public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=11, args_size=8
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject caller
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 5 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg2
        start local 7 // org.jruby.runtime.Block block
         0: .line 283
            aload 1 /* context */
            aload 3 /* self */
            invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            astore 8 /* selfClass */
        start local 8 // org.jruby.RubyClass selfClass
         1: .line 284
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            astore 9 /* name */
        start local 9 // java.lang.String name
         2: .line 285
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
            astore 10 /* entry */
        start local 10 // org.jruby.runtime.callsite.CacheEntry entry
         3: .line 287
            aload 10 /* entry */
            aload 8 /* selfClass */
            invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
            ifeq 5
         4: .line 288
            aload 10 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 10 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 9 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* arg2 */
            aload 7 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         5: .line 291
      StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
      StackMap stack:
            aload 8 /* selfClass */
            aload 9 /* name */
            invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
            astore 10 /* entry */
         6: .line 293
            aload 0 /* this */
            aload 10 /* entry */
            aload 2 /* caller */
            invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 8
         7: .line 294
            aload 10 /* entry */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
            aload 1 /* context */
            aload 3 /* self */
            aload 8 /* selfClass */
            aload 9 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* arg2 */
            aload 7 /* block */
            invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         8: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* entry */
            putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
         9: .line 299
            aload 10 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* context */
            aload 3 /* self */
            aload 10 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 9 /* name */
            aload 4 /* arg0 */
            aload 5 /* arg1 */
            aload 6 /* arg2 */
            aload 7 /* block */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 10 // org.jruby.runtime.callsite.CacheEntry entry
        end local 9 // java.lang.String name
        end local 8 // org.jruby.RubyClass selfClass
        end local 7 // org.jruby.runtime.Block block
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 5 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 4 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.builtin.IRubyObject caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/jruby/ir/targets/InvokeSite;
            0   10     1    context  Lorg/jruby/runtime/ThreadContext;
            0   10     2     caller  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     4       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     5       arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     6       arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     7      block  Lorg/jruby/runtime/Block;
            1   10     8  selfClass  Lorg/jruby/RubyClass;
            2   10     9       name  Ljava/lang/String;
            3   10    10      entry  Lorg/jruby/runtime/callsite/CacheEntry;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      context  
      caller   
      self     
      arg0     
      arg1     
      arg2     
      block    

  public com.headius.invokebinder.Binder prepareBinder(boolean);
    descriptor: (Z)Lcom/headius/invokebinder/Binder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // boolean varargs
         0: .line 309
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
            astore 2 /* binder */
        start local 2 // com.headius.invokebinder.SmartBinder binder
         1: .line 311
            iload 1 /* varargs */
            ifne 2
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            iconst_3
            if_icmple 9
         2: .line 313
      StackMap locals: com.headius.invokebinder.SmartBinder
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            iconst_m1
            if_icmpeq 9
         3: .line 315
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            ifne 6
         4: .line 316
            aload 2 /* binder */
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.argOffset:I
            ldc "args"
            getstatic org.jruby.runtime.builtin.IRubyObject.NULL_ARRAY:[Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
            astore 2 /* binder */
         5: .line 317
            goto 9
         6: .line 318
      StackMap locals:
      StackMap stack:
            aload 2 /* binder */
         7: .line 319
            ldc "args"
            ldc "arg[0-9]+"
            invokevirtual com.headius.invokebinder.SmartBinder.collect:(Ljava/lang/String;Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
         8: .line 318
            astore 2 /* binder */
         9: .line 324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            if_acmpeq 11
        10: .line 325
            aload 2 /* binder */
            ldc "block"
            getstatic org.jruby.runtime.Block.NULL_BLOCK:Lorg/jruby/runtime/Block;
            invokevirtual com.headius.invokebinder.SmartBinder.append:(Ljava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
            astore 2 /* binder */
        11: .line 329
      StackMap locals:
      StackMap stack:
            aload 2 /* binder */
            iconst_0
            ldc "site"
            aload 0 /* this */
            invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
            astore 2 /* binder */
        12: .line 331
            aload 2 /* binder */
            invokevirtual com.headius.invokebinder.SmartBinder.binder:()Lcom/headius/invokebinder/Binder;
            areturn
        end local 2 // com.headius.invokebinder.SmartBinder binder
        end local 1 // boolean varargs
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lorg/jruby/ir/targets/InvokeSite;
            0   13     1  varargs  Z
            1   13     2   binder  Lcom/headius/invokebinder/SmartBinder;
    MethodParameters:
         Name  Flags
      varargs  

  java.lang.invoke.MethodHandle getHandle(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.callsite.CacheEntry);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
        start local 2 // org.jruby.runtime.callsite.CacheEntry entry
         0: .line 335
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 3 /* blockGiven */
        start local 3 // boolean blockGiven
         3: .line 337
            aload 0 /* this */
            aload 2 /* entry */
            aload 1 /* self */
            invokevirtual org.jruby.ir.targets.InvokeSite.buildNewInstanceHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
        start local 4 // java.lang.invoke.MethodHandle mh
         4: .line 338
            aload 4 /* mh */
            ifnonnull 5
            aload 0 /* this */
            aload 2 /* entry */
            aload 1 /* self */
            invokevirtual org.jruby.ir.targets.InvokeSite.buildNotEqualHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
         5: .line 339
      StackMap locals: int java.lang.invoke.MethodHandle
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 6
            aload 0 /* this */
            aload 2 /* entry */
            iload 3 /* blockGiven */
            invokestatic org.jruby.ir.targets.Bootstrap.buildNativeHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Z)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
         6: .line 340
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 7
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* entry */
            aload 1 /* self */
            invokevirtual org.jruby.ir.targets.InvokeSite.buildJavaFieldHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
         7: .line 341
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 8
            aload 0 /* this */
            aload 2 /* entry */
            invokestatic org.jruby.ir.targets.Bootstrap.buildIndyHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
         8: .line 342
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 9
            aload 0 /* this */
            aload 2 /* entry */
            iload 3 /* blockGiven */
            invokestatic org.jruby.ir.targets.Bootstrap.buildJittedHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Z)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
         9: .line 343
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 10
            aload 0 /* this */
            aload 2 /* entry */
            aload 1 /* self */
            invokestatic org.jruby.ir.targets.Bootstrap.buildAttrHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
        10: .line 344
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 11
            aload 0 /* this */
            aload 2 /* entry */
            aload 1 /* self */
            invokevirtual org.jruby.ir.targets.InvokeSite.buildAliasHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
        11: .line 345
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 12
            aload 0 /* this */
            aload 2 /* entry */
            invokevirtual org.jruby.ir.targets.InvokeSite.buildStructHandle:(Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
        12: .line 346
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            ifnonnull 13
            aload 0 /* this */
            aload 2 /* entry */
            invokestatic org.jruby.ir.targets.Bootstrap.buildGenericHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 4 /* mh */
        13: .line 348
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.ir.targets.InvokeSite.$assertionsDisabled:Z
            ifne 14
            aload 4 /* mh */
            ifnonnull 14
            new java.lang.AssertionError
            dup
            ldc "we should have a method handle of some sort by now"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        14: .line 350
      StackMap locals:
      StackMap stack:
            aload 4 /* mh */
            areturn
        end local 4 // java.lang.invoke.MethodHandle mh
        end local 3 // boolean blockGiven
        end local 2 // org.jruby.runtime.callsite.CacheEntry entry
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/jruby/ir/targets/InvokeSite;
            0   15     1        self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   15     2       entry  Lorg/jruby/runtime/callsite/CacheEntry;
            3   15     3  blockGiven  Z
            4   15     4          mh  Ljava/lang/invoke/MethodHandle;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
       Name  Flags
      self   
      entry  

  java.lang.invoke.MethodHandle buildJavaFieldHandle(org.jruby.ir.targets.InvokeSite, org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.ir.targets.InvokeSite site
        start local 2 // org.jruby.runtime.callsite.CacheEntry entry
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 354
            aload 2 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 4 /* method */
        start local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
         1: .line 356
            aload 4 /* method */
            instanceof org.jruby.java.invokers.InstanceFieldGetter
            ifeq 24
         2: .line 358
            aload 1 /* site */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            ifne 3
            aload 1 /* site */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            if_acmpne 4
      StackMap locals: org.jruby.internal.runtime.methods.DynamicMethod
      StackMap stack:
         3: aconst_null
            areturn
         4: .line 360
      StackMap locals:
      StackMap stack:
            aload 4 /* method */
            checkcast org.jruby.java.invokers.InstanceFieldGetter
            invokevirtual org.jruby.java.invokers.InstanceFieldGetter.getField:()Ljava/lang/reflect/Field;
            astore 5 /* field */
        start local 5 // java.lang.reflect.Field field
         5: .line 363
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 6
            aconst_null
            areturn
         6: .line 365
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
            aload 4 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getHandle:()Ljava/lang/Object;
            checkcast java.lang.invoke.MethodHandle
            astore 6 /* fieldHandle */
        start local 6 // java.lang.invoke.MethodHandle fieldHandle
         7: .line 367
            aload 6 /* fieldHandle */
            ifnull 9
         8: .line 368
            aload 6 /* fieldHandle */
            areturn
         9: .line 371
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            aload 5 /* field */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.unreflectGetter:(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;
            astore 6 /* fieldHandle */
        10: .line 373
            aload 3 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getNullToNilHandle:()Ljava/lang/invoke/MethodHandle;
            astore 7 /* filter */
        start local 7 // java.lang.invoke.MethodHandle filter
        11: .line 376
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_0
            anewarray java.lang.Class
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        12: .line 377
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            aastore
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        13: .line 378
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Lorg/jruby/javasupport/JavaUtil;
            ldc "objectFromJavaProxy"
            invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        14: .line 375
            astore 8 /* receiverConverter */
        start local 8 // java.lang.invoke.MethodHandle receiverConverter
        15: .line 381
            aload 1 /* site */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
            iconst_1
            newarray 10
            dup
            iconst_0
        16: .line 382
            iconst_2
            iastore
            invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
        17: .line 383
            iconst_0
            iconst_1
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 8 /* receiverConverter */
            aastore
            invokevirtual com.headius.invokebinder.Binder.filter:(I[Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
        18: .line 384
            aload 7 /* filter */
            invokevirtual com.headius.invokebinder.Binder.filterReturn:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
        19: .line 385
            aload 6 /* fieldHandle */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
        20: .line 386
            aload 6 /* fieldHandle */
            invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
        21: .line 380
            astore 6 /* fieldHandle */
        22: .line 388
            aload 4 /* method */
            aload 6 /* fieldHandle */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
        23: .line 390
            aload 6 /* fieldHandle */
            areturn
        end local 8 // java.lang.invoke.MethodHandle receiverConverter
        end local 7 // java.lang.invoke.MethodHandle filter
        end local 6 // java.lang.invoke.MethodHandle fieldHandle
        end local 5 // java.lang.reflect.Field field
        24: .line 391
      StackMap locals:
      StackMap stack:
            aload 4 /* method */
            instanceof org.jruby.java.invokers.InstanceFieldSetter
            ifeq 46
        25: .line 393
            aload 1 /* site */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            iconst_1
            if_icmpne 26
            aload 1 /* site */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/Block;
            if_acmpne 27
      StackMap locals:
      StackMap stack:
        26: aconst_null
            areturn
        27: .line 395
      StackMap locals:
      StackMap stack:
            aload 4 /* method */
            checkcast org.jruby.java.invokers.InstanceFieldSetter
            invokevirtual org.jruby.java.invokers.InstanceFieldSetter.getField:()Ljava/lang/reflect/Field;
            astore 5 /* field */
        start local 5 // java.lang.reflect.Field field
        28: .line 398
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 29
            aconst_null
            areturn
        29: .line 400
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
            aload 4 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getHandle:()Ljava/lang/Object;
            checkcast java.lang.invoke.MethodHandle
            astore 6 /* fieldHandle */
        start local 6 // java.lang.invoke.MethodHandle fieldHandle
        30: .line 402
            aload 6 /* fieldHandle */
            ifnull 32
        31: .line 403
            aload 6 /* fieldHandle */
            areturn
        32: .line 406
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            aload 5 /* field */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.unreflectSetter:(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;
            astore 6 /* fieldHandle */
        33: .line 409
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_0
            anewarray java.lang.Class
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        34: .line 410
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            aastore
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        35: .line 411
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Lorg/jruby/javasupport/JavaUtil;
            ldc "objectFromJavaProxy"
            invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        36: .line 408
            astore 7 /* receiverConverter */
        start local 7 // java.lang.invoke.MethodHandle receiverConverter
        37: .line 414
            aload 1 /* site */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
            iconst_2
            newarray 10
            dup
            iconst_0
        38: .line 415
            iconst_2
            iastore
            dup
            iconst_1
            iconst_3
            iastore
            invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
        39: .line 416
            iconst_0
            iconst_1
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 7 /* receiverConverter */
            aastore
            invokevirtual com.headius.invokebinder.Binder.filter:(I[Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
        40: .line 417
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            aload 3 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            invokestatic java.lang.invoke.MethodHandles.constant:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            invokevirtual com.headius.invokebinder.Binder.filterReturn:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
        41: .line 418
            aload 6 /* fieldHandle */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
        42: .line 419
            aload 6 /* fieldHandle */
            invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
        43: .line 413
            astore 6 /* fieldHandle */
        44: .line 421
            aload 4 /* method */
            aload 6 /* fieldHandle */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
        45: .line 423
            aload 6 /* fieldHandle */
            areturn
        end local 7 // java.lang.invoke.MethodHandle receiverConverter
        end local 6 // java.lang.invoke.MethodHandle fieldHandle
        end local 5 // java.lang.reflect.Field field
        46: .line 426
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.callsite.CacheEntry entry
        end local 1 // org.jruby.ir.targets.InvokeSite site
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   47     0               this  Lorg/jruby/ir/targets/InvokeSite;
            0   47     1               site  Lorg/jruby/ir/targets/InvokeSite;
            0   47     2              entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0   47     3               self  Lorg/jruby/runtime/builtin/IRubyObject;
            1   47     4             method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            5   24     5              field  Ljava/lang/reflect/Field;
            7   24     6        fieldHandle  Ljava/lang/invoke/MethodHandle;
           11   24     7             filter  Ljava/lang/invoke/MethodHandle;
           15   24     8  receiverConverter  Ljava/lang/invoke/MethodHandle;
           28   46     5              field  Ljava/lang/reflect/Field;
           30   46     6        fieldHandle  Ljava/lang/invoke/MethodHandle;
           37   46     7  receiverConverter  Ljava/lang/invoke/MethodHandle;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
       Name  Flags
      site   
      entry  
      self   

  java.lang.invoke.MethodHandle buildNewInstanceHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.callsite.CacheEntry entry
        start local 2 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 430
            aconst_null
            astore 3 /* mh */
        start local 3 // java.lang.invoke.MethodHandle mh
         1: .line 431
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 4 /* method */
        start local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
         2: .line 433
            aload 4 /* method */
            aload 2 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getBaseNewMethod:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
            if_acmpne 22
         3: .line 434
            aload 2 /* self */
            checkcast org.jruby.RubyClass
            astore 5 /* recvClass */
        start local 5 // org.jruby.RubyClass recvClass
         4: .line 437
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "callFunctional:initialize"
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 5
            iconst_1
            goto 6
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.RubyClass
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
         5: iconst_0
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.RubyClass
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
         6: aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
            astore 6 /* initSite */
        start local 6 // java.lang.invoke.CallSite initSite
         7: .line 438
            aload 6 /* initSite */
            invokevirtual java.lang.invoke.CallSite.dynamicInvoker:()Ljava/lang/invoke/MethodHandle;
            astore 7 /* initHandle */
        start local 7 // java.lang.invoke.MethodHandle initHandle
         8: .line 440
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_0
            anewarray java.lang.Class
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
         9: .line 441
            ldc Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/jruby/RubyClass;
            aastore
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
        10: .line 442
            iconst_0
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/jruby/runtime/ObjectAllocator;
            aastore
            dup
            iconst_1
            ldc Lorg/jruby/Ruby;
            aastore
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* recvClass */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            aastore
            dup
            iconst_1
            aload 2 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            aastore
            invokevirtual com.headius.invokebinder.Binder.insert:(I[Ljava/lang/Class;[Ljava/lang/Object;)Lcom/headius/invokebinder/Binder;
        11: .line 443
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "allocate"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        12: .line 440
            astore 8 /* allocFilter */
        start local 8 // java.lang.invoke.MethodHandle allocFilter
        13: .line 445
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            invokestatic com.headius.invokebinder.SmartBinder.from:(Ljava/lang/invoke/MethodHandles$Lookup;Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
        14: .line 446
            ldc "self"
            aload 8 /* allocFilter */
            invokevirtual com.headius.invokebinder.SmartBinder.filter:(Ljava/lang/String;Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartBinder;
        15: .line 447
            ldc "dummy"
            aload 7 /* initHandle */
            invokevirtual com.headius.invokebinder.SmartBinder.fold:(Ljava/lang/String;Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartBinder;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
        16: .line 448
            ldc "self"
            aastore
            invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
        17: .line 449
            invokevirtual com.headius.invokebinder.SmartBinder.identity:()Lcom/headius/invokebinder/SmartHandle;
        18: .line 450
            invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
        19: .line 445
            astore 3 /* mh */
        20: .line 452
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 22
        21: .line 453
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tbound as new instance creation "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 8 // java.lang.invoke.MethodHandle allocFilter
        end local 7 // java.lang.invoke.MethodHandle initHandle
        end local 6 // java.lang.invoke.CallSite initSite
        end local 5 // org.jruby.RubyClass recvClass
        22: .line 457
      StackMap locals:
      StackMap stack:
            aload 3 /* mh */
            areturn
        end local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 3 // java.lang.invoke.MethodHandle mh
        end local 2 // org.jruby.runtime.builtin.IRubyObject self
        end local 1 // org.jruby.runtime.callsite.CacheEntry entry
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lorg/jruby/ir/targets/InvokeSite;
            0   23     1        entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0   23     2         self  Lorg/jruby/runtime/builtin/IRubyObject;
            1   23     3           mh  Ljava/lang/invoke/MethodHandle;
            2   23     4       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            4   22     5    recvClass  Lorg/jruby/RubyClass;
            7   22     6     initSite  Ljava/lang/invoke/CallSite;
            8   22     7   initHandle  Ljava/lang/invoke/MethodHandle;
           13   22     8  allocFilter  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      entry  
      self   

  java.lang.invoke.MethodHandle buildNotEqualHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.callsite.CacheEntry entry
        start local 2 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 461
            aconst_null
            astore 3 /* mh */
        start local 3 // java.lang.invoke.MethodHandle mh
         1: .line 462
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 4 /* method */
        start local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
         2: .line 464
            aload 2 /* self */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            astore 5 /* runtime */
        start local 5 // org.jruby.Ruby runtime
         3: .line 466
            aload 4 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.isBuiltin:()Z
            ifeq 20
         4: .line 468
            aconst_null
            astore 6 /* equalSite */
        start local 6 // java.lang.invoke.CallSite equalSite
         5: .line 471
            aload 4 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.getBasicObject:()Lorg/jruby/RubyClass;
            if_acmpne 10
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            ldc "!="
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         6: .line 472
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "callFunctional:=="
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 7
            iconst_1
            goto 8
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
         7: iconst_0
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
         8: aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
            astore 6 /* equalSite */
         9: .line 473
            goto 14
      StackMap locals:
      StackMap stack:
        10: aload 4 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.getKernel:()Lorg/jruby/RubyModule;
            if_acmpne 14
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            ldc "!~"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        11: .line 474
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "callFunctional:=~"
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 12
            iconst_1
            goto 13
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
        12: iconst_0
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
        13: aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
            astore 6 /* equalSite */
        14: .line 477
      StackMap locals:
      StackMap stack:
            aload 6 /* equalSite */
            ifnull 20
        15: .line 479
            aload 6 /* equalSite */
            invokevirtual java.lang.invoke.CallSite.dynamicInvoker:()Ljava/lang/invoke/MethodHandle;
            astore 7 /* equalHandle */
        start local 7 // java.lang.invoke.MethodHandle equalHandle
        16: .line 481
            getstatic org.jruby.ir.targets.InvokeSite.NEGATE:Ljava/lang/invoke/MethodHandle;
            iconst_1
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            aastore
            dup
            iconst_1
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.getTrue:()Lorg/jruby/RubyBoolean;
            aastore
            dup
            iconst_2
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.getFalse:()Lorg/jruby/RubyBoolean;
            aastore
            invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            astore 8 /* filter */
        start local 8 // java.lang.invoke.MethodHandle filter
        17: .line 482
            aload 7 /* equalHandle */
            aload 8 /* filter */
            invokestatic java.lang.invoke.MethodHandles.filterReturnValue:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* mh */
        18: .line 484
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 20
        19: .line 485
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tbound as specialized "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 8 // java.lang.invoke.MethodHandle filter
        end local 7 // java.lang.invoke.MethodHandle equalHandle
        end local 6 // java.lang.invoke.CallSite equalSite
        20: .line 490
      StackMap locals:
      StackMap stack:
            aload 3 /* mh */
            areturn
        end local 5 // org.jruby.Ruby runtime
        end local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 3 // java.lang.invoke.MethodHandle mh
        end local 2 // org.jruby.runtime.builtin.IRubyObject self
        end local 1 // org.jruby.runtime.callsite.CacheEntry entry
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         this  Lorg/jruby/ir/targets/InvokeSite;
            0   21     1        entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0   21     2         self  Lorg/jruby/runtime/builtin/IRubyObject;
            1   21     3           mh  Ljava/lang/invoke/MethodHandle;
            2   21     4       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            3   21     5      runtime  Lorg/jruby/Ruby;
            5   20     6    equalSite  Ljava/lang/invoke/CallSite;
           16   20     7  equalHandle  Ljava/lang/invoke/MethodHandle;
           17   20     8       filter  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      entry  
      self   

  public static org.jruby.runtime.builtin.IRubyObject negate(org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyNil, org.jruby.RubyBoolean$True, org.jruby.RubyBoolean$False);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyNil;Lorg/jruby/RubyBoolean$True;Lorg/jruby/RubyBoolean$False;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.jruby.runtime.builtin.IRubyObject object
        start local 1 // org.jruby.RubyNil nil
        start local 2 // org.jruby.RubyBoolean$True tru
        start local 3 // org.jruby.RubyBoolean$False fals
         0: .line 496
            aload 0 /* object */
            aload 1 /* nil */
            if_acmpeq 1
            aload 0 /* object */
            aload 3 /* fals */
            if_acmpne 2
      StackMap locals:
      StackMap stack:
         1: aload 2 /* tru */
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 3 /* fals */
      StackMap locals:
      StackMap stack: org.jruby.RubyBoolean
         3: areturn
        end local 3 // org.jruby.RubyBoolean$False fals
        end local 2 // org.jruby.RubyBoolean$True tru
        end local 1 // org.jruby.RubyNil nil
        end local 0 // org.jruby.runtime.builtin.IRubyObject object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  object  Lorg/jruby/runtime/builtin/IRubyObject;
            0    4     1     nil  Lorg/jruby/RubyNil;
            0    4     2     tru  Lorg/jruby/RubyBoolean$True;
            0    4     3    fals  Lorg/jruby/RubyBoolean$False;
    MethodParameters:
        Name  Flags
      object  
      nil     
      tru     
      fals    

  java.lang.invoke.MethodHandle buildAliasHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.callsite.CacheEntry entry
        start local 2 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 500
            aconst_null
            astore 3 /* mh */
        start local 3 // java.lang.invoke.MethodHandle mh
         1: .line 501
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 4 /* method */
        start local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
         2: .line 503
            aload 4 /* method */
            instanceof org.jruby.internal.runtime.methods.PartialDelegatingMethod
            ifeq 5
         3: .line 504
            aload 0 /* this */
            aload 2 /* self */
            new org.jruby.runtime.callsite.CacheEntry
            dup
            aload 4 /* method */
            checkcast org.jruby.internal.runtime.methods.PartialDelegatingMethod
            invokevirtual org.jruby.internal.runtime.methods.PartialDelegatingMethod.getDelegate:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.token:I
            invokespecial org.jruby.runtime.callsite.CacheEntry.<init>:(Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/RubyModule;I)V
            invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* mh */
         4: .line 505
            goto 16
      StackMap locals: java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod
      StackMap stack:
         5: aload 4 /* method */
            instanceof org.jruby.internal.runtime.methods.AliasMethod
            ifeq 16
         6: .line 506
            aload 4 /* method */
            checkcast org.jruby.internal.runtime.methods.AliasMethod
            astore 5 /* alias */
        start local 5 // org.jruby.internal.runtime.methods.AliasMethod alias
         7: .line 507
            aload 5 /* alias */
            invokevirtual org.jruby.internal.runtime.methods.AliasMethod.getRealMethod:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 6 /* innerMethod */
        start local 6 // org.jruby.internal.runtime.methods.DynamicMethod innerMethod
         8: .line 508
            aload 5 /* alias */
            invokevirtual org.jruby.internal.runtime.methods.AliasMethod.getName:()Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
         9: .line 511
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            new java.lang.StringBuilder
            dup
            ldc "callFunctional:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
            ifeq 10
            iconst_1
            goto 11
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.internal.runtime.methods.AliasMethod org.jruby.internal.runtime.methods.DynamicMethod java.lang.String
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
        10: iconst_0
      StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.internal.runtime.methods.AliasMethod org.jruby.internal.runtime.methods.DynamicMethod java.lang.String
      StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
        11: aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
            checkcast org.jruby.ir.targets.InvokeSite
            astore 8 /* innerSite */
        start local 8 // org.jruby.ir.targets.InvokeSite innerSite
        12: .line 512
            aload 8 /* innerSite */
            aload 2 /* self */
            new org.jruby.runtime.callsite.CacheEntry
            dup
            aload 6 /* innerMethod */
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.token:I
            invokespecial org.jruby.runtime.callsite.CacheEntry.<init>:(Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/RubyModule;I)V
            invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* mh */
        13: .line 514
            aload 5 /* alias */
            aload 3 /* mh */
            invokevirtual org.jruby.internal.runtime.methods.AliasMethod.setHandle:(Ljava/lang/Object;)V
        14: .line 516
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 16
        15: .line 517
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tbound directly through alias to "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 8 // org.jruby.ir.targets.InvokeSite innerSite
        end local 7 // java.lang.String name
        end local 6 // org.jruby.internal.runtime.methods.DynamicMethod innerMethod
        end local 5 // org.jruby.internal.runtime.methods.AliasMethod alias
        16: .line 521
      StackMap locals:
      StackMap stack:
            aload 3 /* mh */
            areturn
        end local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 3 // java.lang.invoke.MethodHandle mh
        end local 2 // org.jruby.runtime.builtin.IRubyObject self
        end local 1 // org.jruby.runtime.callsite.CacheEntry entry
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lorg/jruby/ir/targets/InvokeSite;
            0   17     1        entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0   17     2         self  Lorg/jruby/runtime/builtin/IRubyObject;
            1   17     3           mh  Ljava/lang/invoke/MethodHandle;
            2   17     4       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            7   16     5        alias  Lorg/jruby/internal/runtime/methods/AliasMethod;
            8   16     6  innerMethod  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            9   16     7         name  Ljava/lang/String;
           12   16     8    innerSite  Lorg/jruby/ir/targets/InvokeSite;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
       Name  Flags
      entry  
      self   

  java.lang.invoke.MethodHandle buildStructHandle(org.jruby.runtime.callsite.CacheEntry);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.runtime.callsite.CacheEntry entry
         0: .line 525
            aconst_null
            astore 2 /* mh */
        start local 2 // java.lang.invoke.MethodHandle mh
         1: .line 526
            aload 1 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            astore 3 /* method */
        start local 3 // org.jruby.internal.runtime.methods.DynamicMethod method
         2: .line 528
            aload 3 /* method */
            instanceof org.jruby.RubyStruct$Accessor
            ifeq 19
         3: .line 529
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            ifne 16
         4: .line 530
            aload 3 /* method */
            checkcast org.jruby.RubyStruct$Accessor
            astore 4 /* accessor */
        start local 4 // org.jruby.RubyStruct$Accessor accessor
         5: .line 531
            aload 4 /* accessor */
            invokevirtual org.jruby.RubyStruct$Accessor.getIndex:()I
            istore 5 /* index */
        start local 5 // int index
         6: .line 533
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
         7: .line 534
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            iconst_2
            ldc Lorg/jruby/RubyStruct;
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
            iconst_1
            newarray 10
            dup
            iconst_0
         8: .line 535
            iconst_2
            iastore
            invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
         9: .line 536
            iload 5 /* index */
            invokevirtual com.headius.invokebinder.Binder.append:(I)Lcom/headius/invokebinder/Binder;
        10: .line 537
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "get"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtual:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        11: .line 533
            astore 2 /* mh */
        12: .line 539
            aload 3 /* method */
            aload 2 /* mh */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
        13: .line 541
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 35
        14: .line 542
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tbound directly as Struct accessor "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 5 // int index
        end local 4 // org.jruby.RubyStruct$Accessor accessor
        15: .line 544
            goto 35
        16: .line 545
      StackMap locals: java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod
      StackMap stack:
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 35
        17: .line 546
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tcalled struct accessor with arity > 0 "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        18: .line 549
            goto 35
      StackMap locals:
      StackMap stack:
        19: aload 3 /* method */
            instanceof org.jruby.RubyStruct$Mutator
            ifeq 35
        20: .line 550
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            iconst_1
            if_icmpne 33
        21: .line 551
            aload 3 /* method */
            checkcast org.jruby.RubyStruct$Mutator
            astore 4 /* mutator */
        start local 4 // org.jruby.RubyStruct$Mutator mutator
        22: .line 552
            aload 4 /* mutator */
            invokevirtual org.jruby.RubyStruct$Mutator.getIndex:()I
            istore 5 /* index */
        start local 5 // int index
        23: .line 554
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
        24: .line 555
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            iconst_2
            ldc Lorg/jruby/RubyStruct;
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
            iconst_2
            newarray 10
            dup
            iconst_0
        25: .line 556
            iconst_2
            iastore
            dup
            iconst_1
            iconst_3
            iastore
            invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
        26: .line 557
            iload 5 /* index */
            invokevirtual com.headius.invokebinder.Binder.append:(I)Lcom/headius/invokebinder/Binder;
        27: .line 558
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "set"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtual:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
        28: .line 554
            astore 2 /* mh */
        29: .line 560
            aload 3 /* method */
            aload 2 /* mh */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
        30: .line 562
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 35
        31: .line 563
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tbound directly as Struct mutator "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 5 // int index
        end local 4 // org.jruby.RubyStruct$Mutator mutator
        32: .line 565
            goto 35
        33: .line 566
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 35
        34: .line 567
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tcalled struct mutator with arity > 1 "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* method */
            invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
        35: .line 572
      StackMap locals:
      StackMap stack:
            aload 2 /* mh */
            areturn
        end local 3 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 2 // java.lang.invoke.MethodHandle mh
        end local 1 // org.jruby.runtime.callsite.CacheEntry entry
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   36     0      this  Lorg/jruby/ir/targets/InvokeSite;
            0   36     1     entry  Lorg/jruby/runtime/callsite/CacheEntry;
            1   36     2        mh  Ljava/lang/invoke/MethodHandle;
            2   36     3    method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            5   15     4  accessor  Lorg/jruby/RubyStruct$Accessor;
            6   15     5     index  I
           22   32     4   mutator  Lorg/jruby/RubyStruct$Mutator;
           23   32     5     index  I
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
       Name  Flags
      entry  

  java.lang.invoke.MethodHandle updateInvocationTarget(java.lang.invoke.MethodHandle, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyModule, org.jruby.internal.runtime.methods.DynamicMethod, java.lang.invoke.SwitchPoint);
    descriptor: (Ljava/lang/invoke/MethodHandle;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Lorg/jruby/internal/runtime/methods/DynamicMethod;Ljava/lang/invoke/SwitchPoint;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0000) 
    Code:
      stack=6, locals=10, args_size=6
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // java.lang.invoke.MethodHandle target
        start local 2 // org.jruby.runtime.builtin.IRubyObject self
        start local 3 // org.jruby.RubyModule testClass
        start local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        start local 5 // java.lang.invoke.SwitchPoint switchPoint
         0: .line 584
            aload 0 /* this */
            aload 3 /* testClass */
            invokevirtual org.jruby.ir.targets.InvokeSite.testThresholds:(Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            astore 8 /* cacheAction */
        start local 8 // org.jruby.ir.targets.InvokeSite$CacheAction cacheAction
         1: .line 585
            invokestatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:()[I
            aload 8 /* cacheAction */
            invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 2
                    2: 7
                    3: 7
                    4: 4
              default: 10
          }
         2: .line 587
      StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodHandle org.jruby.runtime.builtin.IRubyObject org.jruby.RubyModule org.jruby.internal.runtime.methods.DynamicMethod java.lang.invoke.SwitchPoint top top org.jruby.ir.targets.InvokeSite$CacheAction
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.logFail:()V
         3: .line 589
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.bindToFail:()Ljava/lang/invoke/MethodHandle;
            areturn
         4: .line 592
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* method */
            invokevirtual org.jruby.ir.targets.InvokeSite.logPic:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)V
         5: .line 593
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.getTarget:()Ljava/lang/invoke/MethodHandle;
            astore 6 /* fallback */
        start local 6 // java.lang.invoke.MethodHandle fallback
         6: .line 594
            goto 11
        end local 6 // java.lang.invoke.MethodHandle fallback
         7: .line 598
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* cacheAction */
            invokevirtual org.jruby.ir.targets.InvokeSite.logBind:(Lorg/jruby/ir/targets/InvokeSite$CacheAction;)V
         8: .line 599
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
            astore 6 /* fallback */
        start local 6 // java.lang.invoke.MethodHandle fallback
         9: .line 600
            goto 11
        end local 6 // java.lang.invoke.MethodHandle fallback
        10: .line 602
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid cache action: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* cacheAction */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        start local 6 // java.lang.invoke.MethodHandle fallback
        11: .line 606
      StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodHandle org.jruby.runtime.builtin.IRubyObject org.jruby.RubyModule org.jruby.internal.runtime.methods.DynamicMethod java.lang.invoke.SwitchPoint java.lang.invoke.MethodHandle top org.jruby.ir.targets.InvokeSite$CacheAction
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            aload 3 /* testClass */
            getfield org.jruby.RubyModule.id:I
            invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
        12: .line 610
            aload 2 /* self */
            instanceof org.jruby.RubySymbol
            ifne 18
        13: .line 611
            aload 2 /* self */
            instanceof org.jruby.RubyFixnum
            ifne 18
        14: .line 612
            aload 2 /* self */
            instanceof org.jruby.RubyFloat
            ifne 18
        15: .line 613
            aload 2 /* self */
            instanceof org.jruby.RubyNil
            ifne 18
        16: .line 614
            aload 2 /* self */
            instanceof org.jruby.RubyBoolean$True
            ifne 18
        17: .line 615
            aload 2 /* self */
            instanceof org.jruby.RubyBoolean$False
            ifeq 25
        18: .line 618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            invokevirtual com.headius.invokebinder.Signature.asFold:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
        19: .line 619
            ldc "self"
            aastore
            invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
        20: .line 620
            iconst_1
            ldc "selfJavaType"
            aload 2 /* self */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
        21: .line 621
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            ldc Ljava/lang/Class;
            aastore
            invokevirtual com.headius.invokebinder.SmartBinder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/SmartBinder;
        22: .line 622
            getstatic org.jruby.ir.targets.InvokeSite.TEST_CLASS:Ljava/lang/invoke/MethodHandle;
            invokevirtual com.headius.invokebinder.SmartBinder.invoke:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartHandle;
        23: .line 617
            astore 9 /* test */
        start local 9 // com.headius.invokebinder.SmartHandle test
        24: .line 624
            goto 30
        end local 9 // com.headius.invokebinder.SmartHandle test
        25: .line 627
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            invokevirtual com.headius.invokebinder.Signature.changeReturn:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
            invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
        26: .line 628
            ldc "self"
            aastore
            invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
        27: .line 629
            iconst_0
            ldc "selfClass"
            ldc Lorg/jruby/RubyClass;
            aload 3 /* testClass */
            invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
        28: .line 630
            getstatic org.jruby.ir.targets.Bootstrap.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Lorg/jruby/ir/targets/Bootstrap;
            ldc "testType"
            invokevirtual com.headius.invokebinder.SmartBinder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Lcom/headius/invokebinder/SmartHandle;
        29: .line 626
            astore 9 /* test */
        start local 9 // com.headius.invokebinder.SmartHandle test
        30: .line 633
      StackMap locals: com.headius.invokebinder.SmartHandle
      StackMap stack:
            aload 9 /* test */
            invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
            aload 1 /* target */
            aload 6 /* fallback */
            invokestatic java.lang.invoke.MethodHandles.guardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 7 /* gwt */
        start local 7 // java.lang.invoke.MethodHandle gwt
        31: .line 636
            aload 5 /* switchPoint */
            aload 7 /* gwt */
            aload 6 /* fallback */
            invokevirtual java.lang.invoke.SwitchPoint.guardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 7 /* gwt */
        32: .line 638
            aload 0 /* this */
            aload 7 /* gwt */
            invokevirtual org.jruby.ir.targets.InvokeSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
        33: .line 640
            aload 1 /* target */
            areturn
        end local 9 // com.headius.invokebinder.SmartHandle test
        end local 8 // org.jruby.ir.targets.InvokeSite$CacheAction cacheAction
        end local 7 // java.lang.invoke.MethodHandle gwt
        end local 6 // java.lang.invoke.MethodHandle fallback
        end local 5 // java.lang.invoke.SwitchPoint switchPoint
        end local 4 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 3 // org.jruby.RubyModule testClass
        end local 2 // org.jruby.runtime.builtin.IRubyObject self
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   34     0         this  Lorg/jruby/ir/targets/InvokeSite;
            0   34     1       target  Ljava/lang/invoke/MethodHandle;
            0   34     2         self  Lorg/jruby/runtime/builtin/IRubyObject;
            0   34     3    testClass  Lorg/jruby/RubyModule;
            0   34     4       method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
            0   34     5  switchPoint  Ljava/lang/invoke/SwitchPoint;
            6    7     6     fallback  Ljava/lang/invoke/MethodHandle;
            9   10     6     fallback  Ljava/lang/invoke/MethodHandle;
           11   34     6     fallback  Ljava/lang/invoke/MethodHandle;
           31   34     7          gwt  Ljava/lang/invoke/MethodHandle;
            1   34     8  cacheAction  Lorg/jruby/ir/targets/InvokeSite$CacheAction;
           24   25     9         test  Lcom/headius/invokebinder/SmartHandle;
           30   34     9         test  Lcom/headius/invokebinder/SmartHandle;
    MethodParameters:
             Name  Flags
      target       
      self         
      testClass    
      method       
      switchPoint  

  private void logMethodMissing();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.jruby.ir.targets.InvokeSite this
         0: .line 644
            getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
            ifeq 2
         1: .line 645
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\ttriggered site #"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.siteID:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " method_missing ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 647
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/jruby/ir/targets/InvokeSite;

  private void logBind(org.jruby.ir.targets.InvokeSite$CacheAction);
    descriptor: (Lorg/jruby/ir/targets/InvokeSite$CacheAction;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.ir.targets.InvokeSite$CacheAction action
         0: .line 650
            getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
            ifeq 2
         1: .line 651
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\ttriggered site #"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.siteID:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* action */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 653
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.jruby.ir.targets.InvokeSite$CacheAction action
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/jruby/ir/targets/InvokeSite;
            0    3     1  action  Lorg/jruby/ir/targets/InvokeSite$CacheAction;
    MethodParameters:
        Name  Flags
      action  

  private void logPic(org.jruby.internal.runtime.methods.DynamicMethod);
    descriptor: (Lorg/jruby/internal/runtime/methods/DynamicMethod;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.internal.runtime.methods.DynamicMethod method
         0: .line 656
            getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
            ifeq 2
         1: .line 657
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tadded to PIC "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* method */
            invokestatic org.jruby.ir.targets.InvokeSite.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         2: .line 659
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.jruby.internal.runtime.methods.DynamicMethod method
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/jruby/ir/targets/InvokeSite;
            0    3     1  method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
    MethodParameters:
        Name  Flags
      method  

  private void logFail();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.jruby.ir.targets.InvokeSite this
         0: .line 662
            getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
            ifeq 6
         1: .line 663
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.clearCount:()I
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            if_icmple 4
         2: .line 664
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tat site #"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.siteID:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " failed more than "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " times; bailing out ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 665
            goto 6
      StackMap locals:
      StackMap stack:
         4: aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
            iconst_1
            iadd
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            if_icmple 6
         5: .line 666
            getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\tat site #"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.siteID:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " encountered more than "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " types; bailing out ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 669
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/jruby/ir/targets/InvokeSite;

  private java.lang.invoke.MethodHandle bindToFail();
    descriptor: ()Ljava/lang/invoke/MethodHandle;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.jruby.ir.targets.InvokeSite this
         0: .line 673
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            invokevirtual org.jruby.ir.targets.InvokeSite.prepareBinder:(Z)Lcom/headius/invokebinder/Binder;
            getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "fail"
            invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
            dup
            astore 1 /* target */
        start local 1 // java.lang.invoke.MethodHandle target
         1: invokevirtual org.jruby.ir.targets.InvokeSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
         2: .line 674
            aload 1 /* target */
            areturn
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/jruby/ir/targets/InvokeSite;
            1    3     1  target  Ljava/lang/invoke/MethodHandle;

  org.jruby.ir.targets.InvokeSite$CacheAction testThresholds(org.jruby.RubyModule);
    descriptor: (Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // org.jruby.RubyModule testClass
         0: .line 680
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.clearCount:()I
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            if_icmpgt 3
         1: .line 681
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            aload 1 /* testClass */
            getfield org.jruby.RubyModule.id:I
            invokevirtual org.jruby.ir.targets.SiteTracker.hasSeenType:(I)Z
            ifne 4
         2: .line 682
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
            iconst_1
            iadd
            getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
            invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            if_icmple 4
         3: .line 684
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            areturn
         4: .line 687
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
            ifle 7
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.getTarget:()Ljava/lang/invoke/MethodHandle;
            ifnull 7
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            aload 1 /* testClass */
            getfield org.jruby.RubyModule.id:I
            invokevirtual org.jruby.ir.targets.SiteTracker.hasSeenType:(I)Z
            ifne 7
         5: .line 689
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            aload 1 /* testClass */
            getfield org.jruby.RubyModule.id:I
            invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
         6: .line 690
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.PIC:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            areturn
         7: .line 693
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            invokevirtual org.jruby.ir.targets.SiteTracker.clearTypes:()V
         8: .line 694
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
            aload 1 /* testClass */
            getfield org.jruby.RubyModule.id:I
            invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
         9: .line 695
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.boundOnce:Z
            ifeq 10
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.REBIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            goto 11
      StackMap locals:
      StackMap stack:
        10: getstatic org.jruby.ir.targets.InvokeSite$CacheAction.BIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
      StackMap locals:
      StackMap stack: org.jruby.ir.targets.InvokeSite$CacheAction
        11: areturn
        end local 1 // org.jruby.RubyModule testClass
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/jruby/ir/targets/InvokeSite;
            0   12     1  testClass  Lorg/jruby/RubyModule;
    MethodParameters:
           Name  Flags
      testClass  

  public static org.jruby.RubyClass pollAndGetClass(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject self
         0: .line 701
            aload 0 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.callThreadPoll:()V
         1: .line 702
            aload 1 /* self */
            invokestatic org.jruby.RubyBasicObject.getMetaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject self
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lorg/jruby/runtime/ThreadContext;
            0    2     1     self  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      self     

  public void setTarget(java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // java.lang.invoke.MethodHandle target
         0: .line 707
            aload 0 /* this */
            aload 1 /* target */
            invokespecial java.lang.invoke.MutableCallSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
         1: .line 708
            aload 0 /* this */
            iconst_1
            putfield org.jruby.ir.targets.InvokeSite.boundOnce:Z
         2: .line 709
            return
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/jruby/ir/targets/InvokeSite;
            0    3     1  target  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
        Name  Flags
      target  

  public void setInitialTarget(java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.targets.InvokeSite this
        start local 1 // java.lang.invoke.MethodHandle target
         0: .line 712
            aload 0 /* this */
            aload 1 /* target */
            invokespecial java.lang.invoke.MutableCallSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
         1: .line 713
            return
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/jruby/ir/targets/InvokeSite;
            0    2     1  target  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
        Name  Flags
      target  

  public abstract boolean methodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      entry   
      caller  

  public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=8
        start local 0 // org.jruby.runtime.callsite.CacheEntry entry
        start local 1 // org.jruby.runtime.CallType callType
        start local 2 // org.jruby.runtime.ThreadContext context
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.RubyClass selfClass
        start local 5 // java.lang.String name
        start local 6 // org.jruby.runtime.builtin.IRubyObject[] args
        start local 7 // org.jruby.runtime.Block block
         0: .line 722
            aload 2 /* context */
            aload 3 /* self */
            aload 4 /* selfClass */
            aload 0 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
            aload 5 /* name */
            aload 1 /* callType */
            aload 6 /* args */
            aload 7 /* block */
            invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 7 // org.jruby.runtime.Block block
        end local 6 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 5 // java.lang.String name
        end local 4 // org.jruby.RubyClass selfClass
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.ThreadContext context
        end local 1 // org.jruby.runtime.CallType callType
        end local 0 // org.jruby.runtime.callsite.CacheEntry entry
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0      entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0    1     1   callType  Lorg/jruby/runtime/CallType;
            0    1     2    context  Lorg/jruby/runtime/ThreadContext;
            0    1     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4  selfClass  Lorg/jruby/RubyClass;
            0    1     5       name  Ljava/lang/String;
            0    1     6       args  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     7      block  Lorg/jruby/runtime/Block;
    MethodParameters:
           Name  Flags
      entry      
      callType   
      context    
      self       
      selfClass  
      name       
      args       
      block      

  public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=8
        start local 0 // org.jruby.runtime.callsite.CacheEntry entry
        start local 1 // org.jruby.runtime.CallType callType
        start local 2 // org.jruby.runtime.ThreadContext context
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.RubyClass selfClass
        start local 5 // java.lang.String name
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 7 // org.jruby.runtime.Block block
         0: .line 730
            aload 2 /* context */
            aload 3 /* self */
            aload 4 /* selfClass */
            aload 0 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
            aload 5 /* name */
            aload 1 /* callType */
            aload 6 /* arg0 */
            aload 7 /* block */
            invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 7 // org.jruby.runtime.Block block
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 5 // java.lang.String name
        end local 4 // org.jruby.RubyClass selfClass
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.ThreadContext context
        end local 1 // org.jruby.runtime.CallType callType
        end local 0 // org.jruby.runtime.callsite.CacheEntry entry
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0      entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0    1     1   callType  Lorg/jruby/runtime/CallType;
            0    1     2    context  Lorg/jruby/runtime/ThreadContext;
            0    1     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4  selfClass  Lorg/jruby/RubyClass;
            0    1     5       name  Ljava/lang/String;
            0    1     6       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     7      block  Lorg/jruby/runtime/Block;
    MethodParameters:
           Name  Flags
      entry      
      callType   
      context    
      self       
      selfClass  
      name       
      arg0       
      block      

  public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=9, args_size=9
        start local 0 // org.jruby.runtime.callsite.CacheEntry entry
        start local 1 // org.jruby.runtime.CallType callType
        start local 2 // org.jruby.runtime.ThreadContext context
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.RubyClass selfClass
        start local 5 // java.lang.String name
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 7 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 8 // org.jruby.runtime.Block block
         0: .line 739
            aload 2 /* context */
            aload 3 /* self */
            aload 4 /* selfClass */
            aload 0 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
            aload 5 /* name */
            aload 1 /* callType */
            aload 6 /* arg0 */
            aload 7 /* arg1 */
            aload 8 /* block */
            invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 8 // org.jruby.runtime.Block block
        end local 7 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 5 // java.lang.String name
        end local 4 // org.jruby.RubyClass selfClass
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.ThreadContext context
        end local 1 // org.jruby.runtime.CallType callType
        end local 0 // org.jruby.runtime.callsite.CacheEntry entry
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0      entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0    1     1   callType  Lorg/jruby/runtime/CallType;
            0    1     2    context  Lorg/jruby/runtime/ThreadContext;
            0    1     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4  selfClass  Lorg/jruby/RubyClass;
            0    1     5       name  Ljava/lang/String;
            0    1     6       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     7       arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     8      block  Lorg/jruby/runtime/Block;
    MethodParameters:
           Name  Flags
      entry      
      callType   
      context    
      self       
      selfClass  
      name       
      arg0       
      arg1       
      block      

  public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=10, locals=10, args_size=10
        start local 0 // org.jruby.runtime.callsite.CacheEntry entry
        start local 1 // org.jruby.runtime.CallType callType
        start local 2 // org.jruby.runtime.ThreadContext context
        start local 3 // org.jruby.runtime.builtin.IRubyObject self
        start local 4 // org.jruby.RubyClass selfClass
        start local 5 // java.lang.String name
        start local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 7 // org.jruby.runtime.builtin.IRubyObject arg1
        start local 8 // org.jruby.runtime.builtin.IRubyObject arg2
        start local 9 // org.jruby.runtime.Block block
         0: .line 748
            aload 2 /* context */
            aload 3 /* self */
            aload 4 /* selfClass */
            aload 0 /* entry */
            getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
            aload 5 /* name */
            aload 1 /* callType */
            aload 6 /* arg0 */
            aload 7 /* arg1 */
            aload 8 /* arg2 */
            aload 9 /* block */
            invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 9 // org.jruby.runtime.Block block
        end local 8 // org.jruby.runtime.builtin.IRubyObject arg2
        end local 7 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 6 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 5 // java.lang.String name
        end local 4 // org.jruby.RubyClass selfClass
        end local 3 // org.jruby.runtime.builtin.IRubyObject self
        end local 2 // org.jruby.runtime.ThreadContext context
        end local 1 // org.jruby.runtime.CallType callType
        end local 0 // org.jruby.runtime.callsite.CacheEntry entry
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0      entry  Lorg/jruby/runtime/callsite/CacheEntry;
            0    1     1   callType  Lorg/jruby/runtime/CallType;
            0    1     2    context  Lorg/jruby/runtime/ThreadContext;
            0    1     3       self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4  selfClass  Lorg/jruby/RubyClass;
            0    1     5       name  Ljava/lang/String;
            0    1     6       arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     7       arg1  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     8       arg2  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     9      block  Lorg/jruby/runtime/Block;
    MethodParameters:
           Name  Flags
      entry      
      callType   
      context    
      self       
      selfClass  
      name       
      arg0       
      arg1       
      arg2       
      block      

  private static java.lang.String logMethod(org.jruby.internal.runtime.methods.DynamicMethod);
    descriptor: (Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.internal.runtime.methods.DynamicMethod method
         0: .line 752
            new java.lang.StringBuilder
            dup
            ldc "[#"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getSerialNumber:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 0 /* method */
            invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.internal.runtime.methods.DynamicMethod method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  method  Lorg/jruby/internal/runtime/methods/DynamicMethod;
    MethodParameters:
        Name  Flags
      method  

  public static boolean testClass(java.lang.Object, java.lang.Class);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object object
        start local 1 // java.lang.Class clazz
         0: .line 757
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* clazz */
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Class clazz
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  object  Ljava/lang/Object;
            0    2     1   clazz  Ljava/lang/Class;
    RuntimeInvisibleAnnotations: 
      org.jruby.ir.JIT()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.jruby.ir.JIT()
    MethodParameters:
        Name  Flags
      object  
      clazz   

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.ir.targets.InvokeSite this
         0: .line 761
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "[name="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ",arity="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.arity:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ",type="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ",file="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ",line="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.jruby.ir.targets.InvokeSite.line:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.ir.targets.InvokeSite this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/targets/InvokeSite;

  static int[] $SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 55
            getstatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.jruby.ir.targets.InvokeSite$CacheAction.values:()[Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.BIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.PIC:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.jruby.ir.targets.InvokeSite$CacheAction.REBIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
            invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
            iconst_3
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
SourceFile: "InvokeSite.java"
NestMembers:
  org.jruby.ir.targets.InvokeSite$CacheAction
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public False = org.jruby.RubyBoolean$False of org.jruby.RubyBoolean
  public True = org.jruby.RubyBoolean$True of org.jruby.RubyBoolean
  public Accessor = org.jruby.RubyStruct$Accessor of org.jruby.RubyStruct
  public Mutator = org.jruby.RubyStruct$Mutator of org.jruby.RubyStruct
  final CacheAction = org.jruby.ir.targets.InvokeSite$CacheAction of org.jruby.ir.targets.InvokeSite