final class jdk.nashorn.internal.runtime.linker.BoundCallableLinker implements jdk.dynalink.linker.TypeBasedGuardingDynamicLinker
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.nashorn.internal.runtime.linker.BoundCallableLinker
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;

  public boolean canLinkType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
        start local 1 // java.lang.Class type
         0: .line 49
            aload 1 /* type */
            ldc Ljdk/nashorn/internal/runtime/linker/BoundCallable;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Class type
        end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;
            0    2     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      type  final

  public jdk.dynalink.linker.GuardedInvocation getGuardedInvocation(jdk.dynalink.linker.LinkRequest, jdk.dynalink.linker.LinkerServices);
    descriptor: (Ljdk/dynalink/linker/LinkRequest;Ljdk/dynalink/linker/LinkerServices;)Ljdk/dynalink/linker/GuardedInvocation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=24, args_size=3
        start local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
        start local 1 // jdk.dynalink.linker.LinkRequest linkRequest
        start local 2 // jdk.dynalink.linker.LinkerServices linkerServices
         0: .line 54
            aload 1 /* linkRequest */
            invokeinterface jdk.dynalink.linker.LinkRequest.getReceiver:()Ljava/lang/Object;
            astore 3 /* objBoundCallable */
        start local 3 // java.lang.Object objBoundCallable
         1: .line 55
            aload 3 /* objBoundCallable */
            instanceof jdk.nashorn.internal.runtime.linker.BoundCallable
            ifne 3
         2: .line 56
            aconst_null
            areturn
         3: .line 59
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* linkRequest */
            invokeinterface jdk.dynalink.linker.LinkRequest.getCallSiteDescriptor:()Ljdk/dynalink/CallSiteDescriptor;
            astore 4 /* descriptor */
        start local 4 // jdk.dynalink.CallSiteDescriptor descriptor
         4: .line 60
            aload 4 /* descriptor */
            invokevirtual jdk.dynalink.CallSiteDescriptor.getOperation:()Ljdk/dynalink/Operation;
            invokestatic jdk.dynalink.NamedOperation.getBaseOperation:(Ljdk/dynalink/Operation;)Ljdk/dynalink/Operation;
            astore 5 /* operation */
        start local 5 // jdk.dynalink.Operation operation
         5: .line 64
            aload 5 /* operation */
            getstatic jdk.dynalink.StandardOperation.NEW:Ljdk/dynalink/StandardOperation;
            if_acmpne 8
         6: .line 65
            iconst_0
            istore 6 /* isCall */
        start local 6 // boolean isCall
         7: .line 66
            goto 12
        end local 6 // boolean isCall
      StackMap locals: jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation
      StackMap stack:
         8: aload 5 /* operation */
            getstatic jdk.dynalink.StandardOperation.CALL:Ljdk/dynalink/StandardOperation;
            if_acmpne 11
         9: .line 67
            iconst_1
            istore 6 /* isCall */
        start local 6 // boolean isCall
        10: .line 68
            goto 12
        end local 6 // boolean isCall
        11: .line 70
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        start local 6 // boolean isCall
        12: .line 72
      StackMap locals: int
      StackMap stack:
            aload 3 /* objBoundCallable */
            checkcast jdk.nashorn.internal.runtime.linker.BoundCallable
            astore 7 /* boundCallable */
        start local 7 // jdk.nashorn.internal.runtime.linker.BoundCallable boundCallable
        13: .line 73
            aload 7 /* boundCallable */
            invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getCallable:()Ljava/lang/Object;
            astore 8 /* callable */
        start local 8 // java.lang.Object callable
        14: .line 74
            aload 7 /* boundCallable */
            invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getBoundThis:()Ljava/lang/Object;
            astore 9 /* boundThis */
        start local 9 // java.lang.Object boundThis
        15: .line 79
            aload 1 /* linkRequest */
            invokeinterface jdk.dynalink.linker.LinkRequest.getArguments:()[Ljava/lang/Object;
            astore 10 /* args */
        start local 10 // java.lang.Object[] args
        16: .line 80
            aload 7 /* boundCallable */
            invokevirtual jdk.nashorn.internal.runtime.linker.BoundCallable.getBoundArgs:()[Ljava/lang/Object;
            astore 11 /* boundArgs */
        start local 11 // java.lang.Object[] boundArgs
        17: .line 81
            aload 10 /* args */
            arraylength
            istore 12 /* argsLen */
        start local 12 // int argsLen
        18: .line 82
            aload 11 /* boundArgs */
            arraylength
            istore 13 /* boundArgsLen */
        start local 13 // int boundArgsLen
        19: .line 83
            iload 12 /* argsLen */
            iload 13 /* boundArgsLen */
            iadd
            anewarray java.lang.Object
            astore 14 /* newArgs */
        start local 14 // java.lang.Object[] newArgs
        20: .line 84
            aload 14 /* newArgs */
            iconst_0
            aload 8 /* callable */
            aastore
        21: .line 86
            iload 6 /* isCall */
            ifeq 25
        22: .line 87
            aload 14 /* newArgs */
            iconst_1
            aload 9 /* boundThis */
            aastore
        23: .line 88
            iconst_2
            istore 15 /* firstArgIndex */
        start local 15 // int firstArgIndex
        24: .line 89
            goto 26
        end local 15 // int firstArgIndex
        25: .line 90
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[]
      StackMap stack:
            iconst_1
            istore 15 /* firstArgIndex */
        start local 15 // int firstArgIndex
        26: .line 92
      StackMap locals: int
      StackMap stack:
            aload 11 /* boundArgs */
            iconst_0
            aload 14 /* newArgs */
            iload 15 /* firstArgIndex */
            iload 13 /* boundArgsLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        27: .line 93
            aload 10 /* args */
            iload 15 /* firstArgIndex */
            aload 14 /* newArgs */
            iload 15 /* firstArgIndex */
            iload 13 /* boundArgsLen */
            iadd
            iload 12 /* argsLen */
            iload 15 /* firstArgIndex */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        28: .line 97
            aload 4 /* descriptor */
            invokevirtual jdk.dynalink.CallSiteDescriptor.getMethodType:()Ljava/lang/invoke/MethodType;
            astore 16 /* type */
        start local 16 // java.lang.invoke.MethodType type
        29: .line 99
            aload 4 /* descriptor */
            invokevirtual jdk.dynalink.CallSiteDescriptor.getMethodType:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 8 /* callable */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 17 /* newMethodType */
        start local 17 // java.lang.invoke.MethodType newMethodType
        30: .line 100
            iload 6 /* isCall */
            ifeq 34
        31: .line 102
            aload 17 /* newMethodType */
            iconst_1
            aload 9 /* boundThis */
            ifnonnull 32
            ldc Ljava/lang/Object;
            goto 33
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType
      StackMap stack: java.lang.invoke.MethodType int
        32: aload 9 /* boundThis */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType
      StackMap stack: java.lang.invoke.MethodType int java.lang.Class
        33: invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 17 /* newMethodType */
        34: .line 105
      StackMap locals:
      StackMap stack:
            aload 11 /* boundArgs */
            arraylength
            istore 18 /* i */
        start local 18 // int i
        35: goto 39
        36: .line 106
      StackMap locals: int
      StackMap stack:
            aload 17 /* newMethodType */
            iload 15 /* firstArgIndex */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 11 /* boundArgs */
            iload 18 /* i */
            aaload
            ifnonnull 37
            ldc Ljava/lang/Object;
            goto 38
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType int
      StackMap stack: java.lang.invoke.MethodType int java.lang.Class[] java.lang.Class[] int
        37: aload 11 /* boundArgs */
            iload 18 /* i */
            aaload
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType int
      StackMap stack: java.lang.invoke.MethodType int java.lang.Class[] java.lang.Class[] int java.lang.Class
        38: aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 17 /* newMethodType */
        39: .line 105
      StackMap locals:
      StackMap stack:
            iload 18 /* i */
            iinc 18 /* i */ -1
            ifgt 36
        end local 18 // int i
        40: .line 108
            aload 4 /* descriptor */
            aload 17 /* newMethodType */
            invokevirtual jdk.dynalink.CallSiteDescriptor.changeMethodType:(Ljava/lang/invoke/MethodType;)Ljdk/dynalink/CallSiteDescriptor;
            astore 18 /* newDescriptor */
        start local 18 // jdk.dynalink.CallSiteDescriptor newDescriptor
        41: .line 111
            aload 2 /* linkerServices */
            aload 1 /* linkRequest */
            aload 18 /* newDescriptor */
            aload 14 /* newArgs */
            invokeinterface jdk.dynalink.linker.LinkRequest.replaceArguments:(Ljdk/dynalink/CallSiteDescriptor;[Ljava/lang/Object;)Ljdk/dynalink/linker/LinkRequest;
            invokeinterface jdk.dynalink.linker.LinkerServices.getGuardedInvocation:(Ljdk/dynalink/linker/LinkRequest;)Ljdk/dynalink/linker/GuardedInvocation;
            astore 19 /* inv */
        start local 19 // jdk.dynalink.linker.GuardedInvocation inv
        42: .line 112
            aload 19 /* inv */
            ifnonnull 44
        43: .line 113
            aconst_null
            areturn
        44: .line 117
      StackMap locals: jdk.nashorn.internal.runtime.linker.BoundCallableLinker jdk.dynalink.linker.LinkRequest jdk.dynalink.linker.LinkerServices java.lang.Object jdk.dynalink.CallSiteDescriptor jdk.dynalink.Operation int jdk.nashorn.internal.runtime.linker.BoundCallable java.lang.Object java.lang.Object java.lang.Object[] java.lang.Object[] int int java.lang.Object[] int java.lang.invoke.MethodType java.lang.invoke.MethodType jdk.dynalink.CallSiteDescriptor jdk.dynalink.linker.GuardedInvocation
      StackMap stack:
            aload 19 /* inv */
            invokevirtual jdk.dynalink.linker.GuardedInvocation.getInvocation:()Ljava/lang/invoke/MethodHandle;
            iconst_0
        45: .line 118
            aload 14 /* newArgs */
            iload 15 /* firstArgIndex */
            aload 11 /* boundArgs */
            arraylength
            iadd
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
        46: .line 117
            invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            astore 20 /* boundHandle */
        start local 20 // java.lang.invoke.MethodHandle boundHandle
        47: .line 119
            aload 16 /* type */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 21 /* p0Type */
        start local 21 // java.lang.Class p0Type
        48: .line 121
            iload 6 /* isCall */
            ifeq 51
        49: .line 123
            aload 20 /* boundHandle */
            iconst_0
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 21 /* p0Type */
            aastore
            dup
            iconst_1
            aload 16 /* type */
            iconst_1
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 22 /* droppingHandle */
        start local 22 // java.lang.invoke.MethodHandle droppingHandle
        50: .line 124
            goto 52
        end local 22 // java.lang.invoke.MethodHandle droppingHandle
        51: .line 126
      StackMap locals: java.lang.invoke.MethodHandle java.lang.Class
      StackMap stack:
            aload 20 /* boundHandle */
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 21 /* p0Type */
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 22 /* droppingHandle */
        start local 22 // java.lang.invoke.MethodHandle droppingHandle
        52: .line 129
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            aload 7 /* boundCallable */
            invokestatic jdk.dynalink.linker.support.Guards.getIdentityGuard:(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            astore 23 /* newGuard */
        start local 23 // java.lang.invoke.MethodHandle newGuard
        53: .line 130
            aload 19 /* inv */
            aload 22 /* droppingHandle */
            aload 23 /* newGuard */
            aload 23 /* newGuard */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 21 /* p0Type */
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            invokevirtual jdk.dynalink.linker.GuardedInvocation.replaceMethods:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljdk/dynalink/linker/GuardedInvocation;
            areturn
        end local 23 // java.lang.invoke.MethodHandle newGuard
        end local 22 // java.lang.invoke.MethodHandle droppingHandle
        end local 21 // java.lang.Class p0Type
        end local 20 // java.lang.invoke.MethodHandle boundHandle
        end local 19 // jdk.dynalink.linker.GuardedInvocation inv
        end local 18 // jdk.dynalink.CallSiteDescriptor newDescriptor
        end local 17 // java.lang.invoke.MethodType newMethodType
        end local 16 // java.lang.invoke.MethodType type
        end local 15 // int firstArgIndex
        end local 14 // java.lang.Object[] newArgs
        end local 13 // int boundArgsLen
        end local 12 // int argsLen
        end local 11 // java.lang.Object[] boundArgs
        end local 10 // java.lang.Object[] args
        end local 9 // java.lang.Object boundThis
        end local 8 // java.lang.Object callable
        end local 7 // jdk.nashorn.internal.runtime.linker.BoundCallable boundCallable
        end local 6 // boolean isCall
        end local 5 // jdk.dynalink.Operation operation
        end local 4 // jdk.dynalink.CallSiteDescriptor descriptor
        end local 3 // java.lang.Object objBoundCallable
        end local 2 // jdk.dynalink.linker.LinkerServices linkerServices
        end local 1 // jdk.dynalink.linker.LinkRequest linkRequest
        end local 0 // jdk.nashorn.internal.runtime.linker.BoundCallableLinker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   54     0              this  Ljdk/nashorn/internal/runtime/linker/BoundCallableLinker;
            0   54     1       linkRequest  Ljdk/dynalink/linker/LinkRequest;
            0   54     2    linkerServices  Ljdk/dynalink/linker/LinkerServices;
            1   54     3  objBoundCallable  Ljava/lang/Object;
            4   54     4        descriptor  Ljdk/dynalink/CallSiteDescriptor;
            5   54     5         operation  Ljdk/dynalink/Operation;
            7    8     6            isCall  Z
           10   11     6            isCall  Z
           12   54     6            isCall  Z
           13   54     7     boundCallable  Ljdk/nashorn/internal/runtime/linker/BoundCallable;
           14   54     8          callable  Ljava/lang/Object;
           15   54     9         boundThis  Ljava/lang/Object;
           16   54    10              args  [Ljava/lang/Object;
           17   54    11         boundArgs  [Ljava/lang/Object;
           18   54    12           argsLen  I
           19   54    13      boundArgsLen  I
           20   54    14           newArgs  [Ljava/lang/Object;
           24   25    15     firstArgIndex  I
           26   54    15     firstArgIndex  I
           29   54    16              type  Ljava/lang/invoke/MethodType;
           30   54    17     newMethodType  Ljava/lang/invoke/MethodType;
           35   40    18                 i  I
           41   54    18     newDescriptor  Ljdk/dynalink/CallSiteDescriptor;
           42   54    19               inv  Ljdk/dynalink/linker/GuardedInvocation;
           47   54    20       boundHandle  Ljava/lang/invoke/MethodHandle;
           48   54    21            p0Type  Ljava/lang/Class<*>;
           50   51    22    droppingHandle  Ljava/lang/invoke/MethodHandle;
           52   54    22    droppingHandle  Ljava/lang/invoke/MethodHandle;
           53   54    23          newGuard  Ljava/lang/invoke/MethodHandle;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                Name  Flags
      linkRequest     final
      linkerServices  final
}
SourceFile: "BoundCallableLinker.java"