public final class jdk.nashorn.internal.runtime.OptimisticReturnFilters
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.nashorn.internal.runtime.OptimisticReturnFilters
  super_class: java.lang.Object
{
  private static final java.lang.invoke.MethodHandle[] ENSURE_INT;
    descriptor: [Ljava/lang/invoke/MethodHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private static final int VOID_TYPE_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int BOOLEAN_TYPE_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int CHAR_TYPE_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int LONG_TYPE_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int FLOAT_TYPE_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=1, args_size=0
         0: .line 44
            ldc Ljdk/nashorn/internal/runtime/OptimisticReturnFilters;
            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 jdk.nashorn.internal.runtime.OptimisticReturnFilters.$assertionsDisabled:Z
         3: .line 56
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 0 /* INT_DOUBLE */
        start local 0 // java.lang.invoke.MethodHandle INT_DOUBLE
         4: .line 57
            bipush 8
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_1
         5: .line 59
            aload 0 /* INT_DOUBLE */
            aastore
            dup
            iconst_2
         6: .line 60
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_3
         7: .line 61
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_4
         8: .line 62
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_5
         9: .line 63
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            bipush 6
        10: .line 64
            ldc "ensureInt"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            bipush 7
        11: .line 65
            aload 0 /* INT_DOUBLE */
            aload 0 /* INT_DOUBLE */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            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;
            aastore
        12: .line 57
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
        13: .line 68
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            arraylength
            iconst_5
            isub
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.VOID_TYPE_INDEX:I
        14: .line 69
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            arraylength
            iconst_4
            isub
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.BOOLEAN_TYPE_INDEX:I
        15: .line 70
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            arraylength
            iconst_3
            isub
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.CHAR_TYPE_INDEX:I
        16: .line 71
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            arraylength
            iconst_2
            isub
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.LONG_TYPE_INDEX:I
        17: .line 72
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            arraylength
            iconst_1
            isub
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.FLOAT_TYPE_INDEX:I
        18: .line 74
            bipush 8
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_2
        19: .line 77
            ldc "ensureNumber"
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_3
        20: .line 78
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.VOID_TYPE_INDEX:I
            aaload
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.VOID_TYPE_INDEX:I
            aaload
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_4
        21: .line 79
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.BOOLEAN_TYPE_INDEX:I
            aaload
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.BOOLEAN_TYPE_INDEX:I
            aaload
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            iconst_5
        22: .line 80
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.CHAR_TYPE_INDEX:I
            aaload
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.CHAR_TYPE_INDEX:I
            aaload
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            aastore
            dup
            bipush 6
        23: .line 81
            ldc "ensureNumber"
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.findOwnMH:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aastore
        24: .line 74
            putstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_NUMBER:[Ljava/lang/invoke/MethodHandle;
        end local 0 // java.lang.invoke.MethodHandle INT_DOUBLE
        25: .line 84
            return
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            4   25     0  INT_DOUBLE  Ljava/lang/invoke/MethodHandle;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.runtime.OptimisticReturnFilters this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.nashorn.internal.runtime.OptimisticReturnFilters this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/runtime/OptimisticReturnFilters;

  public static java.lang.invoke.MethodHandle filterOptimisticReturnValue(java.lang.invoke.MethodHandle, java.lang.Class<?>, int);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=6, args_size=3
        start local 0 // java.lang.invoke.MethodHandle mh
        start local 1 // java.lang.Class expectedReturnType
        start local 2 // int programPoint
         0: .line 95
            iload 2 /* programPoint */
            invokestatic jdk.nashorn.internal.runtime.UnwarrantedOptimismException.isValid:(I)Z
            ifne 2
         1: .line 96
            aload 0 /* mh */
            areturn
         2: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* mh */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* type */
        start local 3 // java.lang.invoke.MethodType type
         3: .line 100
            aload 3 /* type */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* actualReturnType */
        start local 4 // java.lang.Class actualReturnType
         4: .line 101
            aload 4 /* actualReturnType */
            aload 1 /* expectedReturnType */
            invokestatic jdk.dynalink.linker.support.TypeUtilities.isConvertibleWithoutLoss:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 6
         5: .line 102
            aload 0 /* mh */
            areturn
         6: .line 105
      StackMap locals: java.lang.invoke.MethodType java.lang.Class
      StackMap stack:
            aload 1 /* expectedReturnType */
            aload 4 /* actualReturnType */
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.getOptimisticTypeGuard:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 5 /* guard */
        start local 5 // java.lang.invoke.MethodHandle guard
         7: .line 106
            aload 5 /* guard */
            ifnonnull 8
            aload 0 /* mh */
            goto 9
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
         8: getstatic jdk.nashorn.internal.lookup.Lookup.MH:Ljdk/nashorn/internal/lookup/MethodHandleFunctionality;
            aload 0 /* mh */
            getstatic jdk.nashorn.internal.lookup.Lookup.MH:Ljdk/nashorn/internal/lookup/MethodHandleFunctionality;
            aload 5 /* guard */
            aload 5 /* guard */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            isub
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 2 /* programPoint */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface jdk.nashorn.internal.lookup.MethodHandleFunctionality.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            invokeinterface jdk.nashorn.internal.lookup.MethodHandleFunctionality.filterReturnValue:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
      StackMap locals:
      StackMap stack: java.lang.invoke.MethodHandle
         9: areturn
        end local 5 // java.lang.invoke.MethodHandle guard
        end local 4 // java.lang.Class actualReturnType
        end local 3 // java.lang.invoke.MethodType type
        end local 2 // int programPoint
        end local 1 // java.lang.Class expectedReturnType
        end local 0 // java.lang.invoke.MethodHandle mh
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   10     0                  mh  Ljava/lang/invoke/MethodHandle;
            0   10     1  expectedReturnType  Ljava/lang/Class<*>;
            0   10     2        programPoint  I
            3   10     3                type  Ljava/lang/invoke/MethodType;
            4   10     4    actualReturnType  Ljava/lang/Class<*>;
            7   10     5               guard  Ljava/lang/invoke/MethodHandle;
    Signature: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<*>;I)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
                    Name  Flags
      mh                  final
      expectedReturnType  final
      programPoint        final

  public static jdk.dynalink.linker.GuardedInvocation filterOptimisticReturnValue(jdk.dynalink.linker.GuardedInvocation, jdk.dynalink.CallSiteDescriptor);
    descriptor: (Ljdk/dynalink/linker/GuardedInvocation;Ljdk/dynalink/CallSiteDescriptor;)Ljdk/dynalink/linker/GuardedInvocation;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.dynalink.linker.GuardedInvocation inv
        start local 1 // jdk.dynalink.CallSiteDescriptor desc
         0: .line 117
            aload 1 /* desc */
            invokestatic jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.isOptimistic:(Ljdk/dynalink/CallSiteDescriptor;)Z
            ifne 2
         1: .line 118
            aload 0 /* inv */
            areturn
         2: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* inv */
            aload 0 /* inv */
            invokevirtual jdk.dynalink.linker.GuardedInvocation.getInvocation:()Ljava/lang/invoke/MethodHandle;
            aload 1 /* desc */
            invokevirtual jdk.dynalink.CallSiteDescriptor.getMethodType:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
         3: .line 121
            aload 1 /* desc */
            invokestatic jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.getProgramPoint:(Ljdk/dynalink/CallSiteDescriptor;)I
         4: .line 120
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.filterOptimisticReturnValue:(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
         5: .line 121
            aload 0 /* inv */
            invokevirtual jdk.dynalink.linker.GuardedInvocation.getGuard:()Ljava/lang/invoke/MethodHandle;
         6: .line 120
            invokevirtual jdk.dynalink.linker.GuardedInvocation.replaceMethods:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljdk/dynalink/linker/GuardedInvocation;
            areturn
        end local 1 // jdk.dynalink.CallSiteDescriptor desc
        end local 0 // jdk.dynalink.linker.GuardedInvocation inv
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0   inv  Ljdk/dynalink/linker/GuardedInvocation;
            0    7     1  desc  Ljdk/dynalink/CallSiteDescriptor;
    MethodParameters:
      Name  Flags
      inv   final
      desc  final

  private static java.lang.invoke.MethodHandle getOptimisticTypeGuard(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.Class actual
        start local 1 // java.lang.Class provable
         0: .line 126
            aload 1 /* provable */
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.getProvableTypeIndex:(Ljava/lang/Class;)I
            istore 3 /* provableTypeIndex */
        start local 3 // int provableTypeIndex
         1: .line 127
            aload 0 /* actual */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 4
         2: .line 128
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_INT:[Ljava/lang/invoke/MethodHandle;
            iload 3 /* provableTypeIndex */
            aaload
            astore 2 /* guard */
        start local 2 // java.lang.invoke.MethodHandle guard
         3: .line 129
            goto 9
        end local 2 // java.lang.invoke.MethodHandle guard
      StackMap locals: java.lang.Class java.lang.Class top int
      StackMap stack:
         4: aload 0 /* actual */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 7
         5: .line 130
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.ENSURE_NUMBER:[Ljava/lang/invoke/MethodHandle;
            iload 3 /* provableTypeIndex */
            aaload
            astore 2 /* guard */
        start local 2 // java.lang.invoke.MethodHandle guard
         6: .line 131
            goto 9
        end local 2 // java.lang.invoke.MethodHandle guard
         7: .line 132
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* guard */
        start local 2 // java.lang.invoke.MethodHandle guard
         8: .line 133
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.$assertionsDisabled:Z
            ifne 9
            aload 0 /* actual */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 9
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* actual */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* provable */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         9: .line 135
      StackMap locals: java.lang.Class java.lang.Class java.lang.invoke.MethodHandle int
      StackMap stack:
            aload 2 /* guard */
            ifnull 11
            aload 1 /* provable */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 11
        10: .line 141
            aload 2 /* guard */
            aload 2 /* guard */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 1 /* provable */
            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;
            areturn
        11: .line 143
      StackMap locals:
      StackMap stack:
            aload 2 /* guard */
            areturn
        end local 3 // int provableTypeIndex
        end local 2 // java.lang.invoke.MethodHandle guard
        end local 1 // java.lang.Class provable
        end local 0 // java.lang.Class actual
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0             actual  Ljava/lang/Class<*>;
            0   12     1           provable  Ljava/lang/Class<*>;
            3    4     2              guard  Ljava/lang/invoke/MethodHandle;
            6    7     2              guard  Ljava/lang/invoke/MethodHandle;
            8   12     2              guard  Ljava/lang/invoke/MethodHandle;
            1   12     3  provableTypeIndex  I
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
          Name  Flags
      actual    final
      provable  final

  private static int getProvableTypeIndex(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Class provable
         0: .line 147
            aload 0 /* provable */
            invokestatic jdk.nashorn.internal.runtime.JSType.getAccessorTypeIndex:(Ljava/lang/Class;)I
            istore 1 /* accTypeIndex */
        start local 1 // int accTypeIndex
         1: .line 148
            iload 1 /* accTypeIndex */
            iconst_m1
            if_icmpeq 3
         2: .line 149
            iload 1 /* accTypeIndex */
            ireturn
         3: .line 150
      StackMap locals: int
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 5
         4: .line 151
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.BOOLEAN_TYPE_INDEX:I
            ireturn
         5: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 7
         6: .line 153
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.VOID_TYPE_INDEX:I
            ireturn
         7: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpeq 8
            aload 0 /* provable */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 9
         8: .line 155
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         9: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 11
        10: .line 157
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.CHAR_TYPE_INDEX:I
            ireturn
        11: .line 158
      StackMap locals:
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 13
        12: .line 159
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.LONG_TYPE_INDEX:I
            ireturn
        13: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* provable */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 15
        14: .line 161
            getstatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.FLOAT_TYPE_INDEX:I
            ireturn
        15: .line 163
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            aload 0 /* provable */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 1 // int accTypeIndex
        end local 0 // java.lang.Class provable
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0      provable  Ljava/lang/Class<*>;
            1   16     1  accTypeIndex  I
    Signature: (Ljava/lang/Class<*>;)I
    MethodParameters:
          Name  Flags
      provable  final

  private static int ensureInt(long, int);
    descriptor: (JI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // long arg
        start local 2 // int programPoint
         0: .line 169
            lload 0 /* arg */
            invokestatic jdk.nashorn.internal.runtime.JSType.isRepresentableAsInt:(J)Z
            ifeq 2
         1: .line 170
            lload 0 /* arg */
            l2i
            ireturn
         2: .line 172
      StackMap locals:
      StackMap stack:
            lload 0 /* arg */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            iload 2 /* programPoint */
            invokestatic jdk.nashorn.internal.runtime.UnwarrantedOptimismException.createNarrowest:(Ljava/lang/Object;I)Ljdk/nashorn/internal/runtime/UnwarrantedOptimismException;
            athrow
        end local 2 // int programPoint
        end local 0 // long arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0           arg  J
            0    3     2  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  private static int ensureInt(double, int);
    descriptor: (DI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // double arg
        start local 2 // int programPoint
         0: .line 177
            dload 0 /* arg */
            invokestatic jdk.nashorn.internal.runtime.JSType.isStrictlyRepresentableAsInt:(D)Z
            ifeq 2
         1: .line 178
            dload 0 /* arg */
            d2i
            ireturn
         2: .line 180
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            dload 0 /* arg */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            iload 2 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.NUMBER:Ljdk/nashorn/internal/codegen/types/NumericType;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 2 // int programPoint
        end local 0 // double arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0           arg  D
            0    3     2  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  public static int ensureInt(java.lang.Object, int);
    descriptor: (Ljava/lang/Object;I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.Object arg
        start local 1 // int programPoint
         0: .line 197
            aload 0 /* arg */
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.isPrimitiveNumberWrapper:(Ljava/lang/Object;)Z
            ifeq 4
         1: .line 198
            aload 0 /* arg */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            dstore 2 /* d */
        start local 2 // double d
         2: .line 199
            dload 2 /* d */
            invokestatic jdk.nashorn.internal.runtime.JSType.isStrictlyRepresentableAsInt:(D)Z
            ifeq 4
         3: .line 200
            dload 2 /* d */
            d2i
            ireturn
        end local 2 // double d
         4: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* arg */
            iload 1 /* programPoint */
            invokestatic jdk.nashorn.internal.runtime.UnwarrantedOptimismException.createNarrowest:(Ljava/lang/Object;I)Ljdk/nashorn/internal/runtime/UnwarrantedOptimismException;
            athrow
        end local 1 // int programPoint
        end local 0 // java.lang.Object arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0           arg  Ljava/lang/Object;
            0    5     1  programPoint  I
            2    4     2             d  D
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  private static boolean isPrimitiveNumberWrapper(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 207
            aload 0 /* obj */
            ifnonnull 2
         1: .line 208
            iconst_0
            ireturn
         2: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 1 /* c */
        start local 1 // java.lang.Class c
         3: .line 211
            aload 1 /* c */
            ldc Ljava/lang/Integer;
            if_acmpeq 6
            aload 1 /* c */
            ldc Ljava/lang/Double;
            if_acmpeq 6
            aload 1 /* c */
            ldc Ljava/lang/Long;
            if_acmpeq 6
         4: .line 212
            aload 1 /* c */
            ldc Ljava/lang/Float;
            if_acmpeq 6
            aload 1 /* c */
            ldc Ljava/lang/Short;
            if_acmpeq 6
            aload 1 /* c */
            ldc Ljava/lang/Byte;
            if_acmpeq 6
         5: .line 211
            iconst_0
            ireturn
      StackMap locals: java.lang.Class
      StackMap stack:
         6: iconst_1
            ireturn
        end local 1 // java.lang.Class c
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0   obj  Ljava/lang/Object;
            3    7     1     c  Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      obj   final

  private static int ensureInt(boolean, int);
    descriptor: (ZI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // boolean arg
        start local 1 // int programPoint
         0: .line 217
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            iload 0 /* arg */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            iload 1 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 1 // int programPoint
        end local 0 // boolean arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0           arg  Z
            0    1     1  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  private static int ensureInt(char, int);
    descriptor: (CI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // char arg
        start local 1 // int programPoint
         0: .line 222
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            iload 0 /* arg */
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            iload 1 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 1 // int programPoint
        end local 0 // char arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0           arg  C
            0    1     1  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  private static int ensureInt(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int programPoint
         0: .line 228
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED:Ljdk/nashorn/internal/runtime/Undefined;
            iload 0 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 0 // int programPoint
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0  programPoint  I
    MethodParameters:
              Name  Flags
      programPoint  final

  private static double ensureNumber(long, int);
    descriptor: (JI)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // long arg
        start local 2 // int programPoint
         0: .line 234
            lload 0 /* arg */
            invokestatic jdk.nashorn.internal.runtime.JSType.isRepresentableAsDouble:(J)Z
            ifeq 2
         1: .line 235
            lload 0 /* arg */
            l2d
            dreturn
         2: .line 237
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            lload 0 /* arg */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            iload 2 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 2 // int programPoint
        end local 0 // long arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0           arg  J
            0    3     2  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  public static double ensureNumber(java.lang.Object, int);
    descriptor: (Ljava/lang/Object;I)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.Object arg
        start local 1 // int programPoint
         0: .line 250
            aload 0 /* arg */
            invokestatic jdk.nashorn.internal.runtime.OptimisticReturnFilters.isPrimitiveNumberWrapper:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 251
            aload 0 /* arg */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Ljava/lang/Long;
            if_acmpne 2
            aload 0 /* arg */
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokestatic jdk.nashorn.internal.runtime.JSType.isRepresentableAsDouble:(J)Z
            ifeq 3
         2: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* arg */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            dreturn
         3: .line 254
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.runtime.UnwarrantedOptimismException
            dup
            aload 0 /* arg */
            iload 1 /* programPoint */
            getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
            invokespecial jdk.nashorn.internal.runtime.UnwarrantedOptimismException.<init>:(Ljava/lang/Object;ILjdk/nashorn/internal/codegen/types/Type;)V
            athrow
        end local 1 // int programPoint
        end local 0 // java.lang.Object arg
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0           arg  Ljava/lang/Object;
            0    4     1  programPoint  I
    MethodParameters:
              Name  Flags
      arg           final
      programPoint  final

  private static java.lang.invoke.MethodHandle findOwnMH(java.lang.String, java.lang.Class<?>, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // java.lang.String name
        start local 1 // java.lang.Class rtype
        start local 2 // java.lang.Class[] types
         0: .line 258
            getstatic jdk.nashorn.internal.lookup.Lookup.MH:Ljdk/nashorn/internal/lookup/MethodHandleFunctionality;
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            ldc Ljdk/nashorn/internal/runtime/OptimisticReturnFilters;
            aload 0 /* name */
            getstatic jdk.nashorn.internal.lookup.Lookup.MH:Ljdk/nashorn/internal/lookup/MethodHandleFunctionality;
            aload 1 /* rtype */
            aload 2 /* types */
            invokeinterface jdk.nashorn.internal.lookup.MethodHandleFunctionality.type:(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokeinterface jdk.nashorn.internal.lookup.MethodHandleFunctionality.findStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.Class[] types
        end local 1 // java.lang.Class rtype
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   name  Ljava/lang/String;
            0    1     1  rtype  Ljava/lang/Class<*>;
            0    1     2  types  [Ljava/lang/Class;
    Signature: (Ljava/lang/String;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      name   final
      rtype  final
      types  final
}
SourceFile: "OptimisticReturnFilters.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles