public class java.lang.invoke.MethodHandles
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.lang.invoke.MethodHandles
  super_class: java.lang.Object
{
  static final java.lang.invoke.MemberName$Factory IMPL_NAMES;
    descriptor: Ljava/lang/invoke/MemberName$Factory;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final java.security.Permission ACCESS_PERMISSION;
    descriptor: Ljava/security/Permission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private static final java.lang.invoke.MethodHandle[] ZERO_MHS;
    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$sun$invoke$util$Wrapper;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 86
            ldc Ljava/lang/invoke/MethodHandles;
            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 java.lang.invoke.MethodHandles.$assertionsDisabled:Z
         3: .line 90
            invokestatic java.lang.invoke.MemberName.getFactory:()Ljava/lang/invoke/MemberName$Factory;
            putstatic java.lang.invoke.MethodHandles.IMPL_NAMES:Ljava/lang/invoke/MemberName$Factory;
         4: .line 459
            new java.lang.reflect.ReflectPermission
            dup
            ldc "suppressAccessChecks"
            invokespecial java.lang.reflect.ReflectPermission.<init>:(Ljava/lang/String;)V
         5: .line 458
            putstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
         6: .line 5079
            bipush 10
            anewarray java.lang.invoke.MethodHandle
            putstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
         7: .line 5097
            bipush 10
            anewarray java.lang.invoke.MethodHandle
            putstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  public static java.lang.invoke.MethodHandles$Lookup lookup();
    descriptor: ()Ljava/lang/invoke/MethodHandles$Lookup;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 118
            new java.lang.invoke.MethodHandles$Lookup
            dup
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            invokespecial java.lang.invoke.MethodHandles$Lookup.<init>:(Ljava/lang/Class;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      jdk.internal.reflect.CallerSensitive()
      jdk.internal.vm.annotation.ForceInline()

  private static java.lang.invoke.MethodHandles$Lookup reflected$lookup();
    descriptor: ()Ljava/lang/invoke/MethodHandles$Lookup;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 127
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            astore 0 /* caller */
        start local 0 // java.lang.Class caller
         1: .line 128
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ifnonnull 3
         2: .line 129
            new java.lang.StringBuilder
            dup
            ldc "illegal lookupClass: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* caller */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 131
      StackMap locals: java.lang.Class
      StackMap stack:
            new java.lang.invoke.MethodHandles$Lookup
            dup
            aload 0 /* caller */
            invokespecial java.lang.invoke.MethodHandles$Lookup.<init>:(Ljava/lang/Class;)V
            areturn
        end local 0 // java.lang.Class caller
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    4     0  caller  Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      jdk.internal.reflect.CallerSensitive()

  public static java.lang.invoke.MethodHandles$Lookup publicLookup();
    descriptor: ()Ljava/lang/invoke/MethodHandles$Lookup;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 162
            getstatic java.lang.invoke.MethodHandles$Lookup.PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.invoke.MethodHandles$Lookup privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles$Lookup);
    descriptor: (Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // java.lang.Class targetClass
        start local 1 // java.lang.invoke.MethodHandles$Lookup caller
         0: .line 229
            aload 1 /* caller */
            getfield java.lang.invoke.MethodHandles$Lookup.allowedModes:I
            iconst_m1
            if_icmpne 2
         1: .line 230
            new java.lang.invoke.MethodHandles$Lookup
            dup
            aload 0 /* targetClass */
            invokespecial java.lang.invoke.MethodHandles$Lookup.<init>:(Ljava/lang/Class;)V
            areturn
         2: .line 233
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sm */
        start local 2 // java.lang.SecurityManager sm
         3: .line 234
            aload 2 /* sm */
            ifnull 4
            aload 2 /* sm */
            getstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         4: .line 235
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 6
         5: .line 236
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* targetClass */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is a primitive class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 8
         7: .line 238
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* targetClass */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is an array class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 240
      StackMap locals:
      StackMap stack:
            bipush 18
            istore 3 /* requireAccess */
        start local 3 // int requireAccess
         9: .line 241
            aload 1 /* caller */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupModes:()I
            iload 3 /* requireAccess */
            iand
            iload 3 /* requireAccess */
            if_icmpeq 11
        10: .line 242
            new java.lang.IllegalAccessException
            dup
            ldc "caller does not have PRIVATE and MODULE lookup mode"
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 245
      StackMap locals: int
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 12
            aload 1 /* caller */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.previousLookupClass:()Ljava/lang/Class;
            ifnull 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 247
      StackMap locals:
      StackMap stack:
            aload 1 /* caller */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupClass:()Ljava/lang/Class;
            astore 4 /* callerClass */
        start local 4 // java.lang.Class callerClass
        13: .line 248
            aload 4 /* callerClass */
            invokevirtual java.lang.Class.getModule:()Ljava/lang/Module;
            astore 5 /* callerModule */
        start local 5 // java.lang.Module callerModule
        14: .line 249
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.getModule:()Ljava/lang/Module;
            astore 6 /* targetModule */
        start local 6 // java.lang.Module targetModule
        15: .line 250
            aconst_null
            astore 7 /* newPreviousClass */
        start local 7 // java.lang.Class newPreviousClass
        16: .line 251
            bipush 31
            istore 8 /* newModes */
        start local 8 // int newModes
        17: .line 253
            aload 6 /* targetModule */
            aload 5 /* callerModule */
            if_acmpeq 31
        18: .line 254
            aload 5 /* callerModule */
            aload 6 /* targetModule */
            invokevirtual java.lang.Module.canRead:(Ljava/lang/Module;)Z
            ifne 20
        19: .line 255
            new java.lang.IllegalAccessException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 5 /* callerModule */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " does not read "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* targetModule */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 256
      StackMap locals: java.lang.Class java.lang.invoke.MethodHandles$Lookup java.lang.SecurityManager int java.lang.Class java.lang.Module java.lang.Module java.lang.Class int
      StackMap stack:
            aload 6 /* targetModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifeq 25
        21: .line 257
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.getPackageName:()Ljava/lang/String;
            astore 9 /* pn */
        start local 9 // java.lang.String pn
        22: .line 258
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 23
            aload 9 /* pn */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 23
            new java.lang.AssertionError
            dup
            ldc "unnamed package cannot be in named module"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        23: .line 259
      StackMap locals: java.lang.String
      StackMap stack:
            aload 6 /* targetModule */
            aload 9 /* pn */
            aload 5 /* callerModule */
            invokevirtual java.lang.Module.isOpen:(Ljava/lang/String;Ljava/lang/Module;)Z
            ifne 25
        24: .line 260
            new java.lang.IllegalAccessException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 6 /* targetModule */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " does not open "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* pn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " to "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* callerModule */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // java.lang.String pn
        25: .line 264
      StackMap locals:
      StackMap stack:
            aload 4 /* callerClass */
            astore 7 /* newPreviousClass */
        26: .line 265
            iload 8 /* newModes */
            bipush -17
            iand
            istore 8 /* newModes */
        27: .line 267
            aload 5 /* callerModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifne 31
            aload 6 /* targetModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifeq 31
        28: .line 268
            invokestatic jdk.internal.module.IllegalAccessLogger.illegalAccessLogger:()Ljdk/internal/module/IllegalAccessLogger;
            astore 9 /* logger */
        start local 9 // jdk.internal.module.IllegalAccessLogger logger
        29: .line 269
            aload 9 /* logger */
            ifnull 31
        30: .line 270
            aload 9 /* logger */
            aload 1 /* caller */
            aload 0 /* targetClass */
            invokevirtual jdk.internal.module.IllegalAccessLogger.logIfOpenedForIllegalAccess:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;)V
        end local 9 // jdk.internal.module.IllegalAccessLogger logger
        31: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* targetClass */
            aload 7 /* newPreviousClass */
            iload 8 /* newModes */
            invokestatic java.lang.invoke.MethodHandles$Lookup.newLookup:(Ljava/lang/Class;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandles$Lookup;
            areturn
        end local 8 // int newModes
        end local 7 // java.lang.Class newPreviousClass
        end local 6 // java.lang.Module targetModule
        end local 5 // java.lang.Module callerModule
        end local 4 // java.lang.Class callerClass
        end local 3 // int requireAccess
        end local 2 // java.lang.SecurityManager sm
        end local 1 // java.lang.invoke.MethodHandles$Lookup caller
        end local 0 // java.lang.Class targetClass
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   32     0       targetClass  Ljava/lang/Class<*>;
            0   32     1            caller  Ljava/lang/invoke/MethodHandles$Lookup;
            3   32     2                sm  Ljava/lang/SecurityManager;
            9   32     3     requireAccess  I
           13   32     4       callerClass  Ljava/lang/Class<*>;
           14   32     5      callerModule  Ljava/lang/Module;
           15   32     6      targetModule  Ljava/lang/Module;
           16   32     7  newPreviousClass  Ljava/lang/Class<*>;
           17   32     8          newModes  I
           22   25     9                pn  Ljava/lang/String;
           29   31     9            logger  Ljdk/internal/module/IllegalAccessLogger;
    Exceptions:
      throws java.lang.IllegalAccessException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/MethodHandles$Lookup;
    MethodParameters:
             Name  Flags
      targetClass  
      caller       

  public static <T> T classData(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.Class<T>);
    descriptor: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.lang.invoke.MethodHandles$Lookup caller
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class type
         0: .line 330
            aload 0 /* caller */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 331
            aload 2 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 332
            ldc "_"
            aload 1 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 333
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "name must be \"_\": "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 336
      StackMap locals:
      StackMap stack:
            aload 0 /* caller */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupModes:()I
            bipush 64
            iand
            bipush 64
            if_icmpeq 6
         5: .line 337
            new java.lang.IllegalAccessException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* caller */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " does not have ORIGINAL access"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 340
      StackMap locals:
      StackMap stack:
            aload 0 /* caller */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupClass:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandleNatives.classData:(Ljava/lang/Class;)Ljava/lang/Object;
            astore 3 /* classdata */
        start local 3 // java.lang.Object classdata
         7: .line 341
            aload 3 /* classdata */
            ifnonnull 8
            aconst_null
            areturn
         8: .line 344
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3 /* classdata */
            aload 2 /* type */
            invokestatic java.lang.invoke.BootstrapMethodInvoker.widenAndCast:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
         9: areturn
        10: .line 345
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* e */
        start local 4 // java.lang.Throwable e
        11: .line 346
            aload 4 /* e */
            athrow
        end local 4 // java.lang.Throwable e
        12: .line 347
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* e */
        start local 4 // java.lang.Throwable e
        13: .line 348
            new java.lang.InternalError
            dup
            aload 4 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Throwable e
        end local 3 // java.lang.Object classdata
        end local 2 // java.lang.Class type
        end local 1 // java.lang.String name
        end local 0 // java.lang.invoke.MethodHandles$Lookup caller
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0     caller  Ljava/lang/invoke/MethodHandles$Lookup;
            0   14     1       name  Ljava/lang/String;
            0   14     2       type  Ljava/lang/Class<TT;>;
            7   14     3  classdata  Ljava/lang/Object;
           11   12     4          e  Ljava/lang/Throwable;
           13   14     4          e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.RuntimeException
           8     9      10  Class java.lang.Error
           8     9      12  Class java.lang.Throwable
    Exceptions:
      throws java.lang.IllegalAccessException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
        Name  Flags
      caller  
      name    
      type    

  public static <T> T classDataAt(java.lang.invoke.MethodHandles$Lookup, java.lang.String, java.lang.Class<T>, );
    descriptor: (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // java.lang.invoke.MethodHandles$Lookup caller
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class type
        start local 3 // int index
         0: .line 416
            aload 0 /* caller */
            aload 1 /* name */
            ldc Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.classData:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.List
            astore 4 /* classdata */
        start local 4 // java.util.List classdata
         1: .line 417
            aload 4 /* classdata */
            ifnonnull 2
            aconst_null
            areturn
         2: .line 420
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* classdata */
            iload 3 /* index */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            astore 5 /* element */
        start local 5 // java.lang.Object element
         3: .line 421
            aload 5 /* element */
            aload 2 /* type */
            invokestatic java.lang.invoke.BootstrapMethodInvoker.widenAndCast:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
         4: areturn
        end local 5 // java.lang.Object element
         5: .line 422
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5 /* e */
        start local 5 // java.lang.Throwable e
         6: .line 423
            aload 5 /* e */
            athrow
        end local 5 // java.lang.Throwable e
         7: .line 424
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5 /* e */
        start local 5 // java.lang.Throwable e
         8: .line 425
            new java.lang.InternalError
            dup
            aload 5 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Throwable e
        end local 4 // java.util.List classdata
        end local 3 // int index
        end local 2 // java.lang.Class type
        end local 1 // java.lang.String name
        end local 0 // java.lang.invoke.MethodHandles$Lookup caller
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0     caller  Ljava/lang/invoke/MethodHandles$Lookup;
            0    9     1       name  Ljava/lang/String;
            0    9     2       type  Ljava/lang/Class<TT;>;
            0    9     3      index  I
            1    9     4  classdata  Ljava/util/List<Ljava/lang/Object;>;
            3    5     5    element  Ljava/lang/Object;
            6    7     5          e  Ljava/lang/Throwable;
            8    9     5          e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.RuntimeException
           2     4       5  Class java.lang.Error
           2     4       7  Class java.lang.Throwable
    Exceptions:
      throws java.lang.IllegalAccessException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class<TT;>;I)TT;
    MethodParameters:
        Name  Flags
      caller  
      name    
      type    
      index   

  public static <T extends java.lang.reflect.Member> T reflectAs(java.lang.Class<T>, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/reflect/Member;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.Class expected
        start local 1 // java.lang.invoke.MethodHandle target
         0: .line 452
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* smgr */
        start local 2 // java.lang.SecurityManager smgr
         1: .line 453
            aload 2 /* smgr */
            ifnull 2
            aload 2 /* smgr */
            getstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         2: .line 454
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles$Lookup.IMPL_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            astore 3 /* lookup */
        start local 3 // java.lang.invoke.MethodHandles$Lookup lookup
         3: .line 455
            aload 3 /* lookup */
            aload 1 /* target */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.revealDirect:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleInfo;
            aload 0 /* expected */
            aload 3 /* lookup */
            invokeinterface java.lang.invoke.MethodHandleInfo.reflectAs:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/reflect/Member;
            areturn
        end local 3 // java.lang.invoke.MethodHandles$Lookup lookup
        end local 2 // java.lang.SecurityManager smgr
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // java.lang.Class expected
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  expected  Ljava/lang/Class<TT;>;
            0    4     1    target  Ljava/lang/invoke/MethodHandle;
            1    4     2      smgr  Ljava/lang/SecurityManager;
            3    4     3    lookup  Ljava/lang/invoke/MethodHandles$Lookup;
    Signature: <T::Ljava/lang/reflect/Member;>(Ljava/lang/Class<TT;>;Ljava/lang/invoke/MethodHandle;)TT;
    MethodParameters:
          Name  Flags
      expected  
      target    

  public static java.lang.invoke.MethodHandle arrayConstructor(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Class arrayClass
         0: .line 4217
            aload 0 /* arrayClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 2
         1: .line 4218
            new java.lang.StringBuilder
            dup
            ldc "not an array class: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* arrayClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         2: .line 4220
      StackMap locals:
      StackMap stack:
            bipush 11
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
         3: .line 4221
            aload 0 /* arrayClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodHandle.bindTo:(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
         4: .line 4220
            astore 1 /* ani */
        start local 1 // java.lang.invoke.MethodHandle ani
         5: .line 4222
            aload 1 /* ani */
            aload 1 /* ani */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* arrayClass */
            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;
            areturn
        end local 1 // java.lang.invoke.MethodHandle ani
        end local 0 // java.lang.Class arrayClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0  arrayClass  Ljava/lang/Class<*>;
            5    6     1         ani  Ljava/lang/invoke/MethodHandle;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      arrayClass  

  public static java.lang.invoke.MethodHandle arrayLength(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class arrayClass
         0: .line 4242
            aload 0 /* arrayClass */
            getstatic java.lang.invoke.MethodHandleImpl$ArrayAccess.LENGTH:Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;
            invokestatic java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.Class arrayClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  arrayClass  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      arrayClass  

  public static java.lang.invoke.MethodHandle arrayElementGetter(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class arrayClass
         0: .line 4266
            aload 0 /* arrayClass */
            getstatic java.lang.invoke.MethodHandleImpl$ArrayAccess.GET:Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;
            invokestatic java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.Class arrayClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  arrayClass  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      arrayClass  

  public static java.lang.invoke.MethodHandle arrayElementSetter(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class arrayClass
         0: .line 4290
            aload 0 /* arrayClass */
            getstatic java.lang.invoke.MethodHandleImpl$ArrayAccess.SET:Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;
            invokestatic java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor:(Ljava/lang/Class;Ljava/lang/invoke/MethodHandleImpl$ArrayAccess;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.Class arrayClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  arrayClass  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      arrayClass  

  public static java.lang.invoke.VarHandle arrayElementVarHandle(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Class arrayClass
         0: .line 4354
            aload 0 /* arrayClass */
            invokestatic java.lang.invoke.VarHandles.makeArrayElementHandle:(Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
            areturn
        end local 0 // java.lang.Class arrayClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  arrayClass  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/VarHandle;
    MethodParameters:
            Name  Flags
      arrayClass  

  public static java.lang.invoke.VarHandle byteArrayViewVarHandle(java.lang.Class<?>, java.nio.ByteOrder);
    descriptor: (Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Class viewArrayClass
        start local 1 // java.nio.ByteOrder byteOrder
         0: .line 4435
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 4436
            aload 0 /* viewArrayClass */
         2: .line 4437
            aload 1 /* byteOrder */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack: java.lang.Class
         3: iconst_0
         4: .line 4436
      StackMap locals: java.lang.Class java.nio.ByteOrder
      StackMap stack: java.lang.Class int
            invokestatic java.lang.invoke.VarHandles.byteArrayViewHandle:(Ljava/lang/Class;Z)Ljava/lang/invoke/VarHandle;
            areturn
        end local 1 // java.nio.ByteOrder byteOrder
        end local 0 // java.lang.Class viewArrayClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  viewArrayClass  Ljava/lang/Class<*>;
            0    5     1       byteOrder  Ljava/nio/ByteOrder;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
    MethodParameters:
                Name  Flags
      viewArrayClass  
      byteOrder       

  public static java.lang.invoke.VarHandle byteBufferViewVarHandle(java.lang.Class<?>, java.nio.ByteOrder);
    descriptor: (Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Class viewArrayClass
        start local 1 // java.nio.ByteOrder byteOrder
         0: .line 4522
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 4523
            aload 0 /* viewArrayClass */
         2: .line 4524
            aload 1 /* byteOrder */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack: java.lang.Class
         3: iconst_0
         4: .line 4523
      StackMap locals: java.lang.Class java.nio.ByteOrder
      StackMap stack: java.lang.Class int
            invokestatic java.lang.invoke.VarHandles.makeByteBufferViewHandle:(Ljava/lang/Class;Z)Ljava/lang/invoke/VarHandle;
            areturn
        end local 1 // java.nio.ByteOrder byteOrder
        end local 0 // java.lang.Class viewArrayClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  viewArrayClass  Ljava/lang/Class<*>;
            0    5     1       byteOrder  Ljava/nio/ByteOrder;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/Class<*>;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
    MethodParameters:
                Name  Flags
      viewArrayClass  
      byteOrder       

  public static java.lang.invoke.MethodHandle spreadInvoker(java.lang.invoke.MethodType, int);
    descriptor: (Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.invoke.MethodType type
        start local 1 // int leadingArgCount
         0: .line 4577
            iload 1 /* leadingArgCount */
            iflt 1
            iload 1 /* leadingArgCount */
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 2
         1: .line 4578
      StackMap locals:
      StackMap stack:
            ldc "bad argument count"
            iload 1 /* leadingArgCount */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         2: .line 4579
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            ldc [Ljava/lang/Object;
            iload 1 /* leadingArgCount */
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iload 1 /* leadingArgCount */
            isub
            invokevirtual java.lang.invoke.MethodType.asSpreaderType:(Ljava/lang/Class;II)Ljava/lang/invoke/MethodType;
            astore 0 /* type */
         3: .line 4580
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            iload 1 /* leadingArgCount */
            invokevirtual java.lang.invoke.Invokers.spreadInvoker:(I)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // int leadingArgCount
        end local 0 // java.lang.invoke.MethodType type
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             type  Ljava/lang/invoke/MethodType;
            0    4     1  leadingArgCount  I
    MethodParameters:
                 Name  Flags
      type             
      leadingArgCount  

  public static java.lang.invoke.MethodHandle exactInvoker(java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodType type
         0: .line 4619
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            invokevirtual java.lang.invoke.Invokers.exactInvoker:()Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.invoke.MethodType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.invoke.MethodHandle invoker(java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodType type
         0: .line 4657
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            invokevirtual java.lang.invoke.Invokers.genericInvoker:()Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.invoke.MethodType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.invoke.MethodHandle varHandleExactInvoker(java.lang.invoke.VarHandle$AccessMode, java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.invoke.VarHandle$AccessMode accessMode
        start local 1 // java.lang.invoke.MethodType type
         0: .line 4675
            aload 1 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            aload 0 /* accessMode */
            invokevirtual java.lang.invoke.Invokers.varHandleMethodExactInvoker:(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // java.lang.invoke.MethodType type
        end local 0 // java.lang.invoke.VarHandle$AccessMode accessMode
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  accessMode  Ljava/lang/invoke/VarHandle$AccessMode;
            0    1     1        type  Ljava/lang/invoke/MethodType;
    MethodParameters:
            Name  Flags
      accessMode  
      type        

  public static java.lang.invoke.MethodHandle varHandleInvoker(java.lang.invoke.VarHandle$AccessMode, java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.invoke.VarHandle$AccessMode accessMode
        start local 1 // java.lang.invoke.MethodType type
         0: .line 4703
            aload 1 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            aload 0 /* accessMode */
            invokevirtual java.lang.invoke.Invokers.varHandleMethodInvoker:(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // java.lang.invoke.MethodType type
        end local 0 // java.lang.invoke.VarHandle$AccessMode accessMode
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  accessMode  Ljava/lang/invoke/VarHandle$AccessMode;
            0    1     1        type  Ljava/lang/invoke/MethodType;
    MethodParameters:
            Name  Flags
      accessMode  
      type        

  static java.lang.invoke.MethodHandle basicInvoker(java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodType type
         0: .line 4708
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.invokers:()Ljava/lang/invoke/Invokers;
            invokevirtual java.lang.invoke.Invokers.basicInvoker:()Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.invoke.MethodType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.invoke.MethodHandle explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodType newType
         0: .line 4758
            aload 0 /* target */
            aload 1 /* newType */
            invokestatic java.lang.invoke.MethodHandles.explicitCastArgumentsChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
         1: .line 4760
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 2 /* oldType */
        start local 2 // java.lang.invoke.MethodType oldType
         2: .line 4761
            aload 2 /* oldType */
            aload 1 /* newType */
            if_acmpne 3
            aload 0 /* target */
            areturn
         3: .line 4762
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            aload 2 /* oldType */
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.explicitCastEquivalentToAsType:(Ljava/lang/invoke/MethodType;)Z
            ifeq 5
         4: .line 4763
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            areturn
         5: .line 4765
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            aload 1 /* newType */
            iconst_0
            invokestatic java.lang.invoke.MethodHandleImpl.makePairwiseConvert:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.invoke.MethodType oldType
        end local 1 // java.lang.invoke.MethodType newType
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0   target  Ljava/lang/invoke/MethodHandle;
            0    6     1  newType  Ljava/lang/invoke/MethodType;
            2    6     2  oldType  Ljava/lang/invoke/MethodType;
    MethodParameters:
         Name  Flags
      target   
      newType  

  private static void explicitCastArgumentsChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodType newType
         0: .line 4769
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmpeq 2
         1: .line 4770
            new java.lang.invoke.WrongMethodTypeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot explicitly cast "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " to "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* newType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.invoke.WrongMethodTypeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 4772
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.invoke.MethodType newType
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0   target  Ljava/lang/invoke/MethodHandle;
            0    3     1  newType  Ljava/lang/invoke/MethodType;
    MethodParameters:
         Name  Flags
      target   
      newType  

  public static java.lang.invoke.MethodHandle permuteArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType, int[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=13, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodType newType
        start local 2 // int[] reorder
         0: .line 4837
            aload 2 /* reorder */
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            astore 2 /* reorder */
         1: .line 4838
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* oldType */
        start local 3 // java.lang.invoke.MethodType oldType
         2: .line 4839
            aload 2 /* reorder */
            aload 1 /* newType */
            aload 3 /* oldType */
            invokestatic java.lang.invoke.MethodHandles.permuteArgumentChecks:([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
            pop
         3: .line 4842
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
        start local 4 // java.lang.invoke.BoundMethodHandle result
         4: .line 4843
            aload 4 /* result */
            getfield java.lang.invoke.BoundMethodHandle.form:Ljava/lang/invoke/LambdaForm;
            astore 5 /* form */
        start local 5 // java.lang.invoke.LambdaForm form
         5: .line 4844
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 6 /* newArity */
        start local 6 // int newArity
         6: .line 4849
            goto 39
        start local 7 // int ddIdx
         7: .line 4850
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int
      StackMap stack:
            iload 7 /* ddIdx */
            ifle 26
         8: .line 4857
            iload 7 /* ddIdx */
            istore 8 /* srcPos */
        start local 8 // int srcPos
         9: iload 8 /* srcPos */
            istore 9 /* dstPos */
        start local 9 // int dstPos
        10: aload 2 /* reorder */
            iload 8 /* srcPos */
            iaload
            istore 10 /* dupVal */
        start local 10 // int dupVal
        11: .line 4858
            iconst_0
            istore 11 /* killFirst */
        start local 11 // boolean killFirst
        12: .line 4859
            goto 14
        start local 12 // int val
        13: .line 4862
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int int int int int int
      StackMap stack:
            iload 10 /* dupVal */
            iload 12 /* val */
            if_icmple 14
            iconst_1
            istore 11 /* killFirst */
        end local 12 // int val
        14: .line 4859
      StackMap locals:
      StackMap stack:
            aload 2 /* reorder */
            iinc 9 /* dstPos */ -1
            iload 9 /* dstPos */
            iaload
            dup
            istore 12 /* val */
        start local 12 // int val
        15: iload 10 /* dupVal */
            if_icmpne 13
        end local 12 // int val
        16: .line 4864
            iload 11 /* killFirst */
            ifne 19
        17: .line 4865
            iload 9 /* dstPos */
            istore 8 /* srcPos */
        18: .line 4866
            iload 7 /* ddIdx */
            istore 9 /* dstPos */
        19: .line 4868
      StackMap locals:
      StackMap stack:
            aload 5 /* form */
            invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 8 /* srcPos */
            iadd
            iconst_1
            iload 9 /* dstPos */
            iadd
            invokevirtual java.lang.invoke.LambdaFormEditor.dupArgumentForm:(II)Ljava/lang/invoke/LambdaForm;
            astore 5 /* form */
        20: .line 4869
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 21
            aload 2 /* reorder */
            iload 8 /* srcPos */
            iaload
            aload 2 /* reorder */
            iload 9 /* dstPos */
            iaload
            if_icmpeq 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 4870
      StackMap locals:
      StackMap stack:
            aload 3 /* oldType */
            iload 9 /* dstPos */
            iload 9 /* dstPos */
            iconst_1
            iadd
            invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
            astore 3 /* oldType */
        22: .line 4872
            iload 9 /* dstPos */
            iconst_1
            iadd
            istore 12 /* tailPos */
        start local 12 // int tailPos
        23: .line 4873
            aload 2 /* reorder */
            iload 12 /* tailPos */
            aload 2 /* reorder */
            iload 9 /* dstPos */
            aload 2 /* reorder */
            arraylength
            iload 12 /* tailPos */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        24: .line 4874
            aload 2 /* reorder */
            aload 2 /* reorder */
            arraylength
            iconst_1
            isub
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 2 /* reorder */
        end local 12 // int tailPos
        end local 11 // boolean killFirst
        end local 10 // int dupVal
        end local 9 // int dstPos
        end local 8 // int srcPos
        25: .line 4875
            goto 38
        26: .line 4876
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodType int[] java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int int
      StackMap stack:
            iload 7 /* ddIdx */
            iconst_m1
            ixor
            istore 8 /* dropVal */
        start local 8 // int dropVal
        27: iconst_0
            istore 9 /* insPos */
        start local 9 // int insPos
        28: .line 4877
            goto 30
        29: .line 4880
      StackMap locals: int int
      StackMap stack:
            iinc 9 /* insPos */ 1
        30: .line 4877
      StackMap locals:
      StackMap stack:
            iload 9 /* insPos */
            aload 2 /* reorder */
            arraylength
            if_icmpge 31
            aload 2 /* reorder */
            iload 9 /* insPos */
            iaload
            iload 8 /* dropVal */
            if_icmplt 29
        31: .line 4882
      StackMap locals:
      StackMap stack:
            aload 1 /* newType */
            iload 8 /* dropVal */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 10 /* ptype */
        start local 10 // java.lang.Class ptype
        32: .line 4883
            aload 5 /* form */
            invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 9 /* insPos */
            iadd
            aload 10 /* ptype */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            invokevirtual java.lang.invoke.LambdaFormEditor.addArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
            astore 5 /* form */
        33: .line 4884
            aload 3 /* oldType */
            iload 9 /* insPos */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 10 /* ptype */
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 3 /* oldType */
        34: .line 4886
            iload 9 /* insPos */
            iconst_1
            iadd
            istore 11 /* tailPos */
        start local 11 // int tailPos
        35: .line 4887
            aload 2 /* reorder */
            aload 2 /* reorder */
            arraylength
            iconst_1
            iadd
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 2 /* reorder */
        36: .line 4888
            aload 2 /* reorder */
            iload 9 /* insPos */
            aload 2 /* reorder */
            iload 11 /* tailPos */
            aload 2 /* reorder */
            arraylength
            iload 11 /* tailPos */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 4889
            aload 2 /* reorder */
            iload 9 /* insPos */
            iload 8 /* dropVal */
            iastore
        end local 11 // int tailPos
        end local 10 // java.lang.Class ptype
        end local 9 // int insPos
        end local 8 // int dropVal
        38: .line 4891
      StackMap locals:
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 39
            aload 2 /* reorder */
            aload 1 /* newType */
            aload 3 /* oldType */
            invokestatic java.lang.invoke.MethodHandles.permuteArgumentChecks:([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
            ifne 39
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 7 // int ddIdx
        39: .line 4849
      StackMap locals:
      StackMap stack:
            aload 2 /* reorder */
            iload 6 /* newArity */
            invokestatic java.lang.invoke.MethodHandles.findFirstDupOrDrop:([II)I
            dup
            istore 7 /* ddIdx */
        start local 7 // int ddIdx
        40: ifne 7
        end local 7 // int ddIdx
        41: .line 4893
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 42
            aload 2 /* reorder */
            arraylength
            iload 6 /* newArity */
            if_icmpeq 42
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        42: .line 4895
      StackMap locals:
      StackMap stack:
            aload 5 /* form */
            invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            aload 2 /* reorder */
            invokevirtual java.lang.invoke.LambdaFormEditor.permuteArgumentsForm:(I[I)Ljava/lang/invoke/LambdaForm;
            astore 5 /* form */
        43: .line 4896
            aload 1 /* newType */
            aload 4 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.type:()Ljava/lang/invoke/MethodType;
            if_acmpne 45
            aload 5 /* form */
            aload 4 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.internalForm:()Ljava/lang/invoke/LambdaForm;
            if_acmpne 45
        44: .line 4897
            aload 4 /* result */
            areturn
        45: .line 4898
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            aload 1 /* newType */
            aload 5 /* form */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
            areturn
        end local 6 // int newArity
        end local 5 // java.lang.invoke.LambdaForm form
        end local 4 // java.lang.invoke.BoundMethodHandle result
        end local 3 // java.lang.invoke.MethodType oldType
        end local 2 // int[] reorder
        end local 1 // java.lang.invoke.MethodType newType
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   46     0     target  Ljava/lang/invoke/MethodHandle;
            0   46     1    newType  Ljava/lang/invoke/MethodType;
            0   46     2    reorder  [I
            2   46     3    oldType  Ljava/lang/invoke/MethodType;
            4   46     4     result  Ljava/lang/invoke/BoundMethodHandle;
            5   46     5       form  Ljava/lang/invoke/LambdaForm;
            6   46     6   newArity  I
            7   39     7      ddIdx  I
           40   41     7      ddIdx  I
            9   25     8     srcPos  I
           10   25     9     dstPos  I
           11   25    10     dupVal  I
           12   25    11  killFirst  Z
           13   14    12        val  I
           15   16    12        val  I
           23   25    12    tailPos  I
           27   38     8    dropVal  I
           28   38     9     insPos  I
           32   38    10      ptype  Ljava/lang/Class<*>;
           35   38    11    tailPos  I
    MethodParameters:
         Name  Flags
      target   
      newType  
      reorder  

  private static int findFirstDupOrDrop(int[], int);
    descriptor: ([II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // int[] reorder
        start local 1 // int newArity
         0: .line 4910
            iload 1 /* newArity */
            bipush 63
            if_icmpge 22
         1: .line 4911
            lconst_0
            lstore 2 /* mask */
        start local 2 // long mask
         2: .line 4912
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 12
         4: .line 4913
      StackMap locals: long int
      StackMap stack:
            aload 0 /* reorder */
            iload 4 /* i */
            iaload
            istore 5 /* arg */
        start local 5 // int arg
         5: .line 4914
            iload 5 /* arg */
            iload 1 /* newArity */
            if_icmplt 7
         6: .line 4915
            aload 0 /* reorder */
            arraylength
            ireturn
         7: .line 4917
      StackMap locals: int
      StackMap stack:
            lconst_1
            iload 5 /* arg */
            lshl
            lstore 6 /* bit */
        start local 6 // long bit
         8: .line 4918
            lload 2 /* mask */
            lload 6 /* bit */
            land
            lconst_0
            lcmp
            ifeq 10
         9: .line 4919
            iload 4 /* i */
            ireturn
        10: .line 4921
      StackMap locals: long
      StackMap stack:
            lload 2 /* mask */
            lload 6 /* bit */
            lor
            lstore 2 /* mask */
        end local 6 // long bit
        end local 5 // int arg
        11: .line 4912
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 4 /* i */
            aload 0 /* reorder */
            arraylength
            if_icmplt 4
        end local 4 // int i
        13: .line 4923
            lload 2 /* mask */
            lconst_1
            iload 1 /* newArity */
            lshl
            lconst_1
            lsub
            lcmp
            ifne 16
        14: .line 4924
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 15
            lload 2 /* mask */
            ldc -1
            lxor
            invokestatic java.lang.Long.lowestOneBit:(J)J
            invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
            iload 1 /* newArity */
            if_icmpeq 15
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        15: .line 4925
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        16: .line 4928
      StackMap locals:
      StackMap stack:
            lload 2 /* mask */
            ldc -1
            lxor
            invokestatic java.lang.Long.lowestOneBit:(J)J
            lstore 4 /* zeroBit */
        start local 4 // long zeroBit
        17: .line 4929
            lload 4 /* zeroBit */
            invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
            istore 6 /* zeroPos */
        start local 6 // int zeroPos
        18: .line 4930
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 19
            iload 6 /* zeroPos */
            iload 1 /* newArity */
            if_icmple 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 4931
      StackMap locals: long int
      StackMap stack:
            iload 6 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 21
        20: .line 4932
            iconst_0
            ireturn
        21: .line 4934
      StackMap locals:
      StackMap stack:
            iload 6 /* zeroPos */
            iconst_m1
            ixor
            ireturn
        end local 6 // int zeroPos
        end local 4 // long zeroBit
        end local 2 // long mask
        22: .line 4937
      StackMap locals:
      StackMap stack:
            new java.util.BitSet
            dup
            iload 1 /* newArity */
            invokespecial java.util.BitSet.<init>:(I)V
            astore 2 /* mask */
        start local 2 // java.util.BitSet mask
        23: .line 4938
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        24: goto 32
        25: .line 4939
      StackMap locals: java.util.BitSet int
      StackMap stack:
            aload 0 /* reorder */
            iload 3 /* i */
            iaload
            istore 4 /* arg */
        start local 4 // int arg
        26: .line 4940
            iload 4 /* arg */
            iload 1 /* newArity */
            if_icmplt 28
        27: .line 4941
            aload 0 /* reorder */
            arraylength
            ireturn
        28: .line 4943
      StackMap locals: int
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 30
        29: .line 4944
            iload 3 /* i */
            ireturn
        30: .line 4946
      StackMap locals:
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.set:(I)V
        end local 4 // int arg
        31: .line 4938
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 3 /* i */
            aload 0 /* reorder */
            arraylength
            if_icmplt 25
        end local 3 // int i
        33: .line 4948
            aload 2 /* mask */
            iconst_0
            invokevirtual java.util.BitSet.nextClearBit:(I)I
            istore 3 /* zeroPos */
        start local 3 // int zeroPos
        34: .line 4949
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 35
            iload 3 /* zeroPos */
            iload 1 /* newArity */
            if_icmple 35
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        35: .line 4950
      StackMap locals:
      StackMap stack:
            iload 3 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 37
        36: .line 4951
            iconst_0
            ireturn
        37: .line 4953
      StackMap locals:
      StackMap stack:
            iload 3 /* zeroPos */
            iconst_m1
            ixor
            ireturn
        end local 3 // int zeroPos
        end local 2 // java.util.BitSet mask
        end local 1 // int newArity
        end local 0 // int[] reorder
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   38     0   reorder  [I
            0   38     1  newArity  I
            2   22     2      mask  J
            3   13     4         i  I
            5   11     5       arg  I
            8   11     6       bit  J
           17   22     4   zeroBit  J
           18   22     6   zeroPos  I
           23   38     2      mask  Ljava/util/BitSet;
           24   33     3         i  I
           26   31     4       arg  I
           34   38     3   zeroPos  I
    MethodParameters:
          Name  Flags
      reorder   
      newArity  

  static boolean permuteArgumentChecks(int[], java.lang.invoke.MethodType, java.lang.invoke.MethodType);
    descriptor: ([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // int[] reorder
        start local 1 // java.lang.invoke.MethodType newType
        start local 2 // java.lang.invoke.MethodType oldType
         0: .line 4958
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 2 /* oldType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            if_acmpeq 4
         1: .line 4959
            ldc "return types do not match"
         2: .line 4960
            aload 2 /* oldType */
            aload 1 /* newType */
         3: .line 4959
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 4961
      StackMap locals:
      StackMap stack:
            aload 0 /* reorder */
            arraylength
            aload 2 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmpeq 8
         5: .line 4962
            ldc "old type parameter count and reorder array length do not match"
         6: .line 4963
            aload 2 /* oldType */
            aload 0 /* reorder */
            invokestatic java.util.Arrays.toString:([I)Ljava/lang/String;
         7: .line 4962
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         8: .line 4965
      StackMap locals:
      StackMap stack:
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* limit */
        start local 3 // int limit
         9: .line 4966
            iconst_0
            istore 4 /* j */
        start local 4 // int j
        10: goto 23
        11: .line 4967
      StackMap locals: int int
      StackMap stack:
            aload 0 /* reorder */
            iload 4 /* j */
            iaload
            istore 5 /* i */
        start local 5 // int i
        12: .line 4968
            iload 5 /* i */
            iflt 13
            iload 5 /* i */
            iload 3 /* limit */
            if_icmplt 16
        13: .line 4969
      StackMap locals: int
      StackMap stack:
            ldc "index is out of bounds for new type"
        14: .line 4970
            iload 5 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* newType */
        15: .line 4969
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        16: .line 4972
      StackMap locals:
      StackMap stack:
            aload 1 /* newType */
            iload 5 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 6 /* src */
        start local 6 // java.lang.Class src
        17: .line 4973
            aload 2 /* oldType */
            iload 4 /* j */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 7 /* dst */
        start local 7 // java.lang.Class dst
        18: .line 4974
            aload 6 /* src */
            aload 7 /* dst */
            if_acmpeq 22
        19: .line 4975
            ldc "parameter types do not match after reorder"
        20: .line 4976
            aload 2 /* oldType */
            aload 1 /* newType */
        21: .line 4975
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // java.lang.Class dst
        end local 6 // java.lang.Class src
        end local 5 // int i
        22: .line 4966
      StackMap locals:
      StackMap stack:
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
        23: iload 4 /* j */
            aload 0 /* reorder */
            arraylength
            if_icmplt 11
        end local 4 // int j
        24: .line 4978
            iconst_1
            ireturn
        end local 3 // int limit
        end local 2 // java.lang.invoke.MethodType oldType
        end local 1 // java.lang.invoke.MethodType newType
        end local 0 // int[] reorder
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   25     0  reorder  [I
            0   25     1  newType  Ljava/lang/invoke/MethodType;
            0   25     2  oldType  Ljava/lang/invoke/MethodType;
            9   25     3    limit  I
           10   24     4        j  I
           12   22     5        i  I
           17   22     6      src  Ljava/lang/Class<*>;
           18   22     7      dst  Ljava/lang/Class<*>;
    MethodParameters:
         Name  Flags
      reorder  
      newType  
      oldType  

  public static java.lang.invoke.MethodHandle constant(java.lang.Class<?>, );
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // java.lang.Object value
         0: .line 4997
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 8
         1: .line 4998
            aload 0 /* type */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 3
         2: .line 4999
            ldc "void type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 5000
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
            astore 2 /* w */
        start local 2 // sun.invoke.util.Wrapper w
         4: .line 5001
            aload 2 /* w */
            aload 1 /* value */
            aload 0 /* type */
            invokevirtual sun.invoke.util.Wrapper.convert:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            astore 1 /* value */
         5: .line 5002
            aload 2 /* w */
            invokevirtual sun.invoke.util.Wrapper.zero:()Ljava/lang/Object;
            aload 1 /* value */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 5003
            aload 2 /* w */
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            areturn
         7: .line 5004
      StackMap locals: sun.invoke.util.Wrapper
      StackMap stack:
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* value */
            aastore
            invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // sun.invoke.util.Wrapper w
         8: .line 5006
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            ifnonnull 10
         9: .line 5007
            getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            areturn
        10: .line 5008
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            aload 1 /* value */
            invokevirtual java.lang.invoke.MethodHandle.bindTo:(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // java.lang.Object value
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   type  Ljava/lang/Class<*>;
            0   11     1  value  Ljava/lang/Object;
            4    8     2      w  Lsun/invoke/util/Wrapper;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      type   
      value  

  public static java.lang.invoke.MethodHandle identity(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.Class type
         0: .line 5020
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 1
            aload 0 /* type */
            invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
      StackMap locals:
      StackMap stack: sun.invoke.util.Wrapper
         2: astore 1 /* btw */
        start local 1 // sun.invoke.util.Wrapper btw
         3: .line 5021
            aload 1 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         4: .line 5022
            getstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
            iload 2 /* pos */
            aaload
            astore 3 /* ident */
        start local 3 // java.lang.invoke.MethodHandle ident
         5: .line 5023
            aload 3 /* ident */
            ifnonnull 7
         6: .line 5024
            getstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
            iload 2 /* pos */
            aload 1 /* btw */
            invokevirtual sun.invoke.util.Wrapper.primitiveType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandles.makeIdentity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            invokestatic java.lang.invoke.MethodHandles.setCachedMethodHandle:([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* ident */
         7: .line 5026
      StackMap locals: sun.invoke.util.Wrapper int java.lang.invoke.MethodHandle
      StackMap stack:
            aload 3 /* ident */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 0 /* type */
            if_acmpne 9
         8: .line 5027
            aload 3 /* ident */
            areturn
         9: .line 5029
      StackMap locals:
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 10
            aload 1 /* btw */
            getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
            if_acmpeq 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 5030
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.makeIdentity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // java.lang.invoke.MethodHandle ident
        end local 2 // int pos
        end local 1 // sun.invoke.util.Wrapper btw
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   type  Ljava/lang/Class<*>;
            3   11     1    btw  Lsun/invoke/util/Wrapper;
            4   11     2    pos  I
            5   11     3  ident  Ljava/lang/invoke/MethodHandle;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.invoke.MethodHandle zero(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 5050
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5051
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 2
            aload 0 /* type */
            invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            goto 3
      StackMap locals:
      StackMap stack:
         2: getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.zero:(Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
      StackMap locals:
      StackMap stack: java.lang.invoke.MethodHandle
         3: areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      type  

  private static java.lang.invoke.MethodHandle identityOrVoid(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 5055
            aload 0 /* type */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 1
            aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.zero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* type */
            invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
      StackMap locals:
      StackMap stack: java.lang.invoke.MethodHandle
         2: areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.invoke.MethodHandle empty(java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodType type
         0: .line 5075
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5076
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandles.zero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 0 // java.lang.invoke.MethodType type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  type  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      type  

  private static java.lang.invoke.MethodHandle makeIdentity(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.Class ptype
         0: .line 5081
            aload 0 /* ptype */
            aload 0 /* ptype */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 1 /* mtype */
        start local 1 // java.lang.invoke.MethodType mtype
         1: .line 5082
            aload 0 /* ptype */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            invokestatic java.lang.invoke.LambdaForm.identityForm:(Ljava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
            astore 2 /* lform */
        start local 2 // java.lang.invoke.LambdaForm lform
         2: .line 5083
            aload 1 /* mtype */
            aload 2 /* lform */
            getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.IDENTITY:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
            invokestatic java.lang.invoke.MethodHandleImpl.makeIntrinsic:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodHandleImpl$Intrinsic;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.invoke.LambdaForm lform
        end local 1 // java.lang.invoke.MethodType mtype
        end local 0 // java.lang.Class ptype
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  ptype  Ljava/lang/Class<*>;
            1    3     1  mtype  Ljava/lang/invoke/MethodType;
            2    3     2  lform  Ljava/lang/invoke/LambdaForm;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      ptype  

  private static java.lang.invoke.MethodHandle zero(sun.invoke.util.Wrapper, java.lang.Class<?>);
    descriptor: (Lsun/invoke/util/Wrapper;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.invoke.util.Wrapper btw
        start local 1 // java.lang.Class rtype
         0: .line 5087
            aload 0 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         1: .line 5088
            getstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
            iload 2 /* pos */
            aaload
            astore 3 /* zero */
        start local 3 // java.lang.invoke.MethodHandle zero
         2: .line 5089
            aload 3 /* zero */
            ifnonnull 4
         3: .line 5090
            getstatic java.lang.invoke.MethodHandles.ZERO_MHS:[Ljava/lang/invoke/MethodHandle;
            iload 2 /* pos */
            aload 0 /* btw */
            invokevirtual sun.invoke.util.Wrapper.primitiveType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandles.makeZero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            invokestatic java.lang.invoke.MethodHandles.setCachedMethodHandle:([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* zero */
         4: .line 5092
      StackMap locals: int java.lang.invoke.MethodHandle
      StackMap stack:
            aload 3 /* zero */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 1 /* rtype */
            if_acmpne 6
         5: .line 5093
            aload 3 /* zero */
            areturn
         6: .line 5094
      StackMap locals:
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 7
            aload 0 /* btw */
            getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
            if_acmpeq 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 5095
      StackMap locals:
      StackMap stack:
            aload 1 /* rtype */
            invokestatic java.lang.invoke.MethodHandles.makeZero:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // java.lang.invoke.MethodHandle zero
        end local 2 // int pos
        end local 1 // java.lang.Class rtype
        end local 0 // sun.invoke.util.Wrapper btw
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0    btw  Lsun/invoke/util/Wrapper;
            0    8     1  rtype  Ljava/lang/Class<*>;
            1    8     2    pos  I
            2    8     3   zero  Ljava/lang/invoke/MethodHandle;
    Signature: (Lsun/invoke/util/Wrapper;Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      btw    
      rtype  

  private static java.lang.invoke.MethodHandle makeZero(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.Class rtype
         0: .line 5099
            aload 0 /* rtype */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 1 /* mtype */
        start local 1 // java.lang.invoke.MethodType mtype
         1: .line 5100
            aload 0 /* rtype */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            invokestatic java.lang.invoke.LambdaForm.zeroForm:(Ljava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
            astore 2 /* lform */
        start local 2 // java.lang.invoke.LambdaForm lform
         2: .line 5101
            aload 1 /* mtype */
            aload 2 /* lform */
            getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.ZERO:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
            invokestatic java.lang.invoke.MethodHandleImpl.makeIntrinsic:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/invoke/MethodHandleImpl$Intrinsic;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.invoke.LambdaForm lform
        end local 1 // java.lang.invoke.MethodType mtype
        end local 0 // java.lang.Class rtype
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  rtype  Ljava/lang/Class<*>;
            1    3     1  mtype  Ljava/lang/invoke/MethodType;
            2    3     2  lform  Ljava/lang/invoke/LambdaForm;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      rtype  

  private static synchronized java.lang.invoke.MethodHandle setCachedMethodHandle(java.lang.invoke.MethodHandle[], int, java.lang.invoke.MethodHandle);
    descriptor: ([Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.lang.invoke.MethodHandle[] cache
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle value
         0: .line 5106
            aload 0 /* cache */
            iload 1 /* pos */
            aaload
            astore 3 /* prev */
        start local 3 // java.lang.invoke.MethodHandle prev
         1: .line 5107
            aload 3 /* prev */
            ifnull 2
            aload 3 /* prev */
            areturn
         2: .line 5108
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            aload 0 /* cache */
            iload 1 /* pos */
            aload 2 /* value */
            dup_x2
            aastore
            areturn
        end local 3 // java.lang.invoke.MethodHandle prev
        end local 2 // java.lang.invoke.MethodHandle value
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle[] cache
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  cache  [Ljava/lang/invoke/MethodHandle;
            0    3     1    pos  I
            0    3     2  value  Ljava/lang/invoke/MethodHandle;
            1    3     3   prev  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      cache  
      pos    
      value  

  public static java.lang.invoke.MethodHandle insertArguments(java.lang.invoke.MethodHandle, int, java.lang.Object[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.Object[] values
         0: .line 5150
            aload 2 /* values */
            arraylength
            istore 3 /* insCount */
        start local 3 // int insCount
         1: .line 5151
            aload 0 /* target */
            iload 3 /* insCount */
            iload 1 /* pos */
            invokestatic java.lang.invoke.MethodHandles.insertArgumentsChecks:(Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
            astore 4 /* ptypes */
        start local 4 // java.lang.Class[] ptypes
         2: .line 5152
            iload 3 /* insCount */
            ifne 3
            aload 0 /* target */
            areturn
         3: .line 5153
      StackMap locals: int java.lang.Class[]
      StackMap stack:
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        start local 5 // java.lang.invoke.BoundMethodHandle result
         4: .line 5154
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 14
         6: .line 5155
      StackMap locals: java.lang.invoke.BoundMethodHandle int
      StackMap stack:
            aload 2 /* values */
            iload 6 /* i */
            aaload
            astore 7 /* value */
        start local 7 // java.lang.Object value
         7: .line 5156
            aload 4 /* ptypes */
            iload 1 /* pos */
            iload 6 /* i */
            iadd
            aaload
            astore 8 /* ptype */
        start local 8 // java.lang.Class ptype
         8: .line 5157
            aload 8 /* ptype */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 11
         9: .line 5158
            aload 5 /* result */
            iload 1 /* pos */
            aload 8 /* ptype */
            aload 7 /* value */
            invokestatic java.lang.invoke.MethodHandles.insertArgumentPrimitive:(Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        10: .line 5159
            goto 13
        11: .line 5160
      StackMap locals: java.lang.Object java.lang.Class
      StackMap stack:
            aload 8 /* ptype */
            aload 7 /* value */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* value */
        12: .line 5161
            aload 5 /* result */
            iload 1 /* pos */
            aload 7 /* value */
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentL:(ILjava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        end local 8 // java.lang.Class ptype
        end local 7 // java.lang.Object value
        13: .line 5154
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            iload 3 /* insCount */
            if_icmplt 6
        end local 6 // int i
        15: .line 5164
            aload 5 /* result */
            areturn
        end local 5 // java.lang.invoke.BoundMethodHandle result
        end local 4 // java.lang.Class[] ptypes
        end local 3 // int insCount
        end local 2 // java.lang.Object[] values
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0    target  Ljava/lang/invoke/MethodHandle;
            0   16     1       pos  I
            0   16     2    values  [Ljava/lang/Object;
            1   16     3  insCount  I
            2   16     4    ptypes  [Ljava/lang/Class;
            4   16     5    result  Ljava/lang/invoke/BoundMethodHandle;
            5   15     6         i  I
            7   13     7     value  Ljava/lang/Object;
            8   13     8     ptype  Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      target  
      pos     
      values  

  private static java.lang.invoke.BoundMethodHandle insertArgumentPrimitive(java.lang.invoke.BoundMethodHandle, int, java.lang.Class<?>, );
    descriptor: (Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.lang.invoke.BoundMethodHandle result
        start local 1 // int pos
        start local 2 // java.lang.Class ptype
        start local 3 // java.lang.Object value
         0: .line 5169
            aload 2 /* ptype */
            invokestatic sun.invoke.util.Wrapper.forPrimitiveType:(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
            astore 4 /* w */
        start local 4 // sun.invoke.util.Wrapper w
         1: .line 5171
            aload 4 /* w */
            aload 3 /* value */
            aload 2 /* ptype */
            invokevirtual sun.invoke.util.Wrapper.convert:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            astore 3 /* value */
         2: .line 5172
            invokestatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:()[I
            aload 4 /* w */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            iaload
            tableswitch { // 5 - 8
                    5: 3
                    6: 4
                    7: 5
                    8: 6
              default: 7
          }
         3: .line 5173
      StackMap locals: sun.invoke.util.Wrapper
      StackMap stack:
            aload 0 /* result */
            iload 1 /* pos */
            aload 3 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentI:(II)Ljava/lang/invoke/BoundMethodHandle;
            areturn
         4: .line 5174
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            iload 1 /* pos */
            aload 3 /* value */
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentJ:(IJ)Ljava/lang/invoke/BoundMethodHandle;
            areturn
         5: .line 5175
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            iload 1 /* pos */
            aload 3 /* value */
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentF:(IF)Ljava/lang/invoke/BoundMethodHandle;
            areturn
         6: .line 5176
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            iload 1 /* pos */
            aload 3 /* value */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentD:(ID)Ljava/lang/invoke/BoundMethodHandle;
            areturn
         7: .line 5177
      StackMap locals:
      StackMap stack:
            aload 0 /* result */
            iload 1 /* pos */
            aload 3 /* value */
            invokestatic sun.invoke.util.ValueConversions.widenSubword:(Ljava/lang/Object;)I
            invokevirtual java.lang.invoke.BoundMethodHandle.bindArgumentI:(II)Ljava/lang/invoke/BoundMethodHandle;
            areturn
        end local 4 // sun.invoke.util.Wrapper w
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Class ptype
        end local 1 // int pos
        end local 0 // java.lang.invoke.BoundMethodHandle result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  result  Ljava/lang/invoke/BoundMethodHandle;
            0    8     1     pos  I
            0    8     2   ptype  Ljava/lang/Class<*>;
            0    8     3   value  Ljava/lang/Object;
            1    8     4       w  Lsun/invoke/util/Wrapper;
    Signature: (Ljava/lang/invoke/BoundMethodHandle;ILjava/lang/Class<*>;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
    MethodParameters:
        Name  Flags
      result  
      pos     
      ptype   
      value   

  private static java.lang.Class<?>[] insertArgumentsChecks(java.lang.invoke.MethodHandle, int, int);
    descriptor: (Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int insCount
        start local 2 // int pos
         0: .line 5182
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* oldType */
        start local 3 // java.lang.invoke.MethodType oldType
         1: .line 5183
            aload 3 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         2: .line 5184
            iload 4 /* outargs */
            iload 1 /* insCount */
            isub
            istore 5 /* inargs */
        start local 5 // int inargs
         3: .line 5185
            iload 5 /* inargs */
            ifge 5
         4: .line 5186
            ldc "too many values to insert"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 5187
      StackMap locals: java.lang.invoke.MethodType int int
      StackMap stack:
            iload 2 /* pos */
            iflt 6
            iload 2 /* pos */
            iload 5 /* inargs */
            if_icmple 7
         6: .line 5188
      StackMap locals:
      StackMap stack:
            ldc "no argument type to append"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         7: .line 5189
      StackMap locals:
      StackMap stack:
            aload 3 /* oldType */
            invokevirtual java.lang.invoke.MethodType.ptypes:()[Ljava/lang/Class;
            areturn
        end local 5 // int inargs
        end local 4 // int outargs
        end local 3 // java.lang.invoke.MethodType oldType
        end local 2 // int pos
        end local 1 // int insCount
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0    target  Ljava/lang/invoke/MethodHandle;
            0    8     1  insCount  I
            0    8     2       pos  I
            1    8     3   oldType  Ljava/lang/invoke/MethodType;
            2    8     4   outargs  I
            3    8     5    inargs  I
    Exceptions:
      throws java.lang.RuntimeException
    Signature: (Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class<*>;
    MethodParameters:
          Name  Flags
      target    
      insCount  
      pos       

  public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.util.List valueTypes
         0: .line 5235
            aload 0 /* target */
            iload 1 /* pos */
            aload 2 /* valueTypes */
            invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
            invokestatic java.lang.invoke.MethodHandles.copyTypes:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.util.List valueTypes
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0      target  Ljava/lang/invoke/MethodHandle;
            0    1     1         pos  I
            0    1     2  valueTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/lang/invoke/MethodHandle;ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      target      
      pos         
      valueTypes  

  private static java.util.List<java.lang.Class<?>> copyTypes([]);
    descriptor: ([Ljava/lang/Object;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object[] array
         0: .line 5239
            aload 0 /* array */
            aload 0 /* array */
            arraylength
            ldc [Ljava/lang/Class;
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
            checkcast java.lang.Class[]
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Object[] array
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  array  [Ljava/lang/Object;
    Signature: ([Ljava/lang/Object;)Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
       Name  Flags
      array  

  private static java.lang.invoke.MethodHandle dropArguments0(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=11, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.util.List valueTypes
         0: .line 5243
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* oldType */
        start local 3 // java.lang.invoke.MethodType oldType
         1: .line 5244
            aload 3 /* oldType */
            iload 1 /* pos */
            aload 2 /* valueTypes */
            invokestatic java.lang.invoke.MethodHandles.dropArgumentChecks:(Ljava/lang/invoke/MethodType;ILjava/util/List;)I
            istore 4 /* dropped */
        start local 4 // int dropped
         2: .line 5245
            aload 3 /* oldType */
            iload 1 /* pos */
            aload 2 /* valueTypes */
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
            astore 5 /* newType */
        start local 5 // java.lang.invoke.MethodType newType
         3: .line 5246
            iload 4 /* dropped */
            ifne 4
            aload 0 /* target */
            areturn
         4: .line 5247
      StackMap locals: java.lang.invoke.MethodType int java.lang.invoke.MethodType
      StackMap stack:
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 6 /* result */
        start local 6 // java.lang.invoke.BoundMethodHandle result
         5: .line 5248
            aload 6 /* result */
            getfield java.lang.invoke.BoundMethodHandle.form:Ljava/lang/invoke/LambdaForm;
            astore 7 /* lform */
        start local 7 // java.lang.invoke.LambdaForm lform
         6: .line 5249
            iconst_1
            iload 1 /* pos */
            iadd
            istore 8 /* insertFormArg */
        start local 8 // int insertFormArg
         7: .line 5250
            aload 2 /* valueTypes */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 10
      StackMap locals: java.lang.invoke.MethodHandle int java.util.List java.lang.invoke.MethodType int java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm int top java.util.Iterator
      StackMap stack:
         8: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 9 /* ptype */
        start local 9 // java.lang.Class ptype
         9: .line 5251
            aload 7 /* lform */
            invokevirtual java.lang.invoke.LambdaForm.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iload 8 /* insertFormArg */
            iinc 8 /* insertFormArg */ 1
            aload 9 /* ptype */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            invokevirtual java.lang.invoke.LambdaFormEditor.addArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
            astore 7 /* lform */
        end local 9 // java.lang.Class ptype
        10: .line 5250
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 5253
            aload 6 /* result */
            aload 5 /* newType */
            aload 7 /* lform */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
            astore 6 /* result */
        12: .line 5254
            aload 6 /* result */
            areturn
        end local 8 // int insertFormArg
        end local 7 // java.lang.invoke.LambdaForm lform
        end local 6 // java.lang.invoke.BoundMethodHandle result
        end local 5 // java.lang.invoke.MethodType newType
        end local 4 // int dropped
        end local 3 // java.lang.invoke.MethodType oldType
        end local 2 // java.util.List valueTypes
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0         target  Ljava/lang/invoke/MethodHandle;
            0   13     1            pos  I
            0   13     2     valueTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            1   13     3        oldType  Ljava/lang/invoke/MethodType;
            2   13     4        dropped  I
            3   13     5        newType  Ljava/lang/invoke/MethodType;
            5   13     6         result  Ljava/lang/invoke/BoundMethodHandle;
            6   13     7          lform  Ljava/lang/invoke/LambdaForm;
            7   13     8  insertFormArg  I
            9   10     9          ptype  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/invoke/MethodHandle;ILjava/util/List<Ljava/lang/Class<*>;>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      target      
      pos         
      valueTypes  

  private static int dropArgumentChecks(java.lang.invoke.MethodType, int, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/lang/invoke/MethodType;ILjava/util/List;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // java.lang.invoke.MethodType oldType
        start local 1 // int pos
        start local 2 // java.util.List valueTypes
         0: .line 5258
            aload 2 /* valueTypes */
            invokeinterface java.util.List.size:()I
            istore 3 /* dropped */
        start local 3 // int dropped
         1: .line 5259
            iload 3 /* dropped */
            invokestatic java.lang.invoke.MethodType.checkSlotCount:(I)V
         2: .line 5260
            aload 0 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         3: .line 5261
            iload 4 /* outargs */
            iload 3 /* dropped */
            iadd
            istore 5 /* inargs */
        start local 5 // int inargs
         4: .line 5262
            iload 1 /* pos */
            iflt 5
            iload 1 /* pos */
            iload 4 /* outargs */
            if_icmple 8
         5: .line 5263
      StackMap locals: int int int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "no argument type to remove"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 5264
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* oldType */
            aastore
            dup
            iconst_1
            iload 1 /* pos */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* valueTypes */
            aastore
            dup
            iconst_3
            iload 5 /* inargs */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            iload 4 /* outargs */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         7: .line 5263
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         8: .line 5266
      StackMap locals:
      StackMap stack:
            iload 3 /* dropped */
            ireturn
        end local 5 // int inargs
        end local 4 // int outargs
        end local 3 // int dropped
        end local 2 // java.util.List valueTypes
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodType oldType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0     oldType  Ljava/lang/invoke/MethodType;
            0    9     1         pos  I
            0    9     2  valueTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            1    9     3     dropped  I
            3    9     4     outargs  I
            4    9     5      inargs  I
    Signature: (Ljava/lang/invoke/MethodType;ILjava/util/List<Ljava/lang/Class<*>;>;)I
    MethodParameters:
            Name  Flags
      oldType     
      pos         
      valueTypes  

  public static java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle, int, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.Class[] valueTypes
         0: .line 5316
            aload 0 /* target */
            iload 1 /* pos */
            aload 2 /* valueTypes */
            invokestatic java.lang.invoke.MethodHandles.copyTypes:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.Class[] valueTypes
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0      target  Ljava/lang/invoke/MethodHandle;
            0    1     1         pos  I
            0    1     2  valueTypes  [Ljava/lang/Class;
    Signature: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class<*>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      target      
      pos         
      valueTypes  

  private static java.lang.invoke.MethodHandle dropArgumentsToMatch(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>, int, boolean);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;IZ)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int skip
        start local 2 // java.util.List newTypes
        start local 3 // int pos
        start local 4 // boolean nullOnFailure
         0: .line 5322
            aload 2 /* newTypes */
            invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
            invokestatic java.lang.invoke.MethodHandles.copyTypes:([Ljava/lang/Object;)Ljava/util/List;
            astore 2 /* newTypes */
         1: .line 5323
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* oldTypes */
        start local 5 // java.util.List oldTypes
         2: .line 5324
            aload 5 /* oldTypes */
            invokeinterface java.util.List.size:()I
            istore 6 /* match */
        start local 6 // int match
         3: .line 5325
            iload 1 /* skip */
            ifeq 8
         4: .line 5326
            iload 1 /* skip */
            iflt 5
            iload 1 /* skip */
            iload 6 /* match */
            if_icmple 6
         5: .line 5327
      StackMap locals: java.util.List int
      StackMap stack:
            ldc "illegal skip"
            iload 1 /* skip */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 0 /* target */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         6: .line 5329
      StackMap locals:
      StackMap stack:
            aload 5 /* oldTypes */
            iload 1 /* skip */
            iload 6 /* match */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 5 /* oldTypes */
         7: .line 5330
            iload 6 /* match */
            iload 1 /* skip */
            isub
            istore 6 /* match */
         8: .line 5332
      StackMap locals:
      StackMap stack:
            aload 2 /* newTypes */
            astore 7 /* addTypes */
        start local 7 // java.util.List addTypes
         9: .line 5333
            aload 7 /* addTypes */
            invokeinterface java.util.List.size:()I
            istore 8 /* add */
        start local 8 // int add
        10: .line 5334
            iload 3 /* pos */
            ifeq 16
        11: .line 5335
            iload 3 /* pos */
            iflt 12
            iload 3 /* pos */
            iload 8 /* add */
            if_icmple 13
        12: .line 5336
      StackMap locals: java.util.List int
      StackMap stack:
            ldc "illegal pos"
            iload 3 /* pos */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 2 /* newTypes */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        13: .line 5338
      StackMap locals:
      StackMap stack:
            aload 7 /* addTypes */
            iload 3 /* pos */
            iload 8 /* add */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 7 /* addTypes */
        14: .line 5339
            iload 8 /* add */
            iload 3 /* pos */
            isub
            istore 8 /* add */
        15: .line 5340
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 16
            aload 7 /* addTypes */
            invokeinterface java.util.List.size:()I
            iload 8 /* add */
            if_icmpeq 16
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        16: .line 5343
      StackMap locals:
      StackMap stack:
            iload 6 /* match */
            iload 8 /* add */
            if_icmpgt 17
            aload 5 /* oldTypes */
            aload 7 /* addTypes */
            iconst_0
            iload 6 /* match */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ifne 20
        17: .line 5344
      StackMap locals:
      StackMap stack:
            iload 4 /* nullOnFailure */
            ifeq 19
        18: .line 5345
            aconst_null
            areturn
        19: .line 5347
      StackMap locals:
      StackMap stack:
            ldc "argument lists do not match"
            aload 5 /* oldTypes */
            aload 2 /* newTypes */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        20: .line 5349
      StackMap locals:
      StackMap stack:
            aload 7 /* addTypes */
            iload 6 /* match */
            iload 8 /* add */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 7 /* addTypes */
        21: .line 5350
            iload 8 /* add */
            iload 6 /* match */
            isub
            istore 8 /* add */
        22: .line 5351
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 23
            aload 7 /* addTypes */
            invokeinterface java.util.List.size:()I
            iload 8 /* add */
            if_icmpeq 23
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        23: .line 5354
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            astore 9 /* adapter */
        start local 9 // java.lang.invoke.MethodHandle adapter
        24: .line 5355
            iload 8 /* add */
            ifle 26
        25: .line 5356
            aload 9 /* adapter */
            iload 1 /* skip */
            iload 6 /* match */
            iadd
            aload 7 /* addTypes */
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            astore 9 /* adapter */
        26: .line 5359
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            iload 3 /* pos */
            ifle 28
        27: .line 5360
            aload 9 /* adapter */
            iload 1 /* skip */
            aload 2 /* newTypes */
            iconst_0
            iload 3 /* pos */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            astore 9 /* adapter */
        28: .line 5363
      StackMap locals:
      StackMap stack:
            aload 9 /* adapter */
            areturn
        end local 9 // java.lang.invoke.MethodHandle adapter
        end local 8 // int add
        end local 7 // java.util.List addTypes
        end local 6 // int match
        end local 5 // java.util.List oldTypes
        end local 4 // boolean nullOnFailure
        end local 3 // int pos
        end local 2 // java.util.List newTypes
        end local 1 // int skip
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0         target  Ljava/lang/invoke/MethodHandle;
            0   29     1           skip  I
            0   29     2       newTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            0   29     3            pos  I
            0   29     4  nullOnFailure  Z
            2   29     5       oldTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            3   29     6          match  I
            9   29     7       addTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
           10   29     8            add  I
           24   29     9        adapter  Ljava/lang/invoke/MethodHandle;
    Signature: (Ljava/lang/invoke/MethodHandle;ILjava/util/List<Ljava/lang/Class<*>;>;IZ)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
               Name  Flags
      target         
      skip           
      newTypes       
      pos            
      nullOnFailure  

  public static java.lang.invoke.MethodHandle dropArgumentsToMatch(java.lang.invoke.MethodHandle, int, java.util.List<java.lang.Class<?>>, int);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/util/List;I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int skip
        start local 2 // java.util.List newTypes
        start local 3 // int pos
         0: .line 5422
            aload 0 /* target */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5423
            aload 2 /* newTypes */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 5424
            aload 0 /* target */
            iload 1 /* skip */
            aload 2 /* newTypes */
            iload 3 /* pos */
            iconst_0
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;IZ)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // int pos
        end local 2 // java.util.List newTypes
        end local 1 // int skip
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0    target  Ljava/lang/invoke/MethodHandle;
            0    3     1      skip  I
            0    3     2  newTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            0    3     3       pos  I
    Signature: (Ljava/lang/invoke/MethodHandle;ILjava/util/List<Ljava/lang/Class<*>;>;I)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
          Name  Flags
      target    
      skip      
      newTypes  
      pos       

  public static java.lang.invoke.MethodHandle dropReturn(java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.lang.invoke.MethodHandle target
         0: .line 5437
            aload 0 /* target */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5438
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 1 /* oldType */
        start local 1 // java.lang.invoke.MethodType oldType
         2: .line 5439
            aload 1 /* oldType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 2 /* oldReturnType */
        start local 2 // java.lang.Class oldReturnType
         3: .line 5440
            aload 2 /* oldReturnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 5
         4: .line 5441
            aload 0 /* target */
            areturn
         5: .line 5442
      StackMap locals: java.lang.invoke.MethodType java.lang.Class
      StackMap stack:
            aload 1 /* oldType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 3 /* newType */
        start local 3 // java.lang.invoke.MethodType newType
         6: .line 5443
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
        start local 4 // java.lang.invoke.BoundMethodHandle result
         7: .line 5444
            aload 4 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            getstatic java.lang.invoke.LambdaForm$BasicType.V_TYPE:Ljava/lang/invoke/LambdaForm$BasicType;
            iconst_1
            invokevirtual java.lang.invoke.LambdaFormEditor.filterReturnForm:(Ljava/lang/invoke/LambdaForm$BasicType;Z)Ljava/lang/invoke/LambdaForm;
            astore 5 /* lform */
        start local 5 // java.lang.invoke.LambdaForm lform
         8: .line 5445
            aload 4 /* result */
            aload 3 /* newType */
            aload 5 /* lform */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
         9: .line 5446
            aload 4 /* result */
            areturn
        end local 5 // java.lang.invoke.LambdaForm lform
        end local 4 // java.lang.invoke.BoundMethodHandle result
        end local 3 // java.lang.invoke.MethodType newType
        end local 2 // java.lang.Class oldReturnType
        end local 1 // java.lang.invoke.MethodType oldType
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0         target  Ljava/lang/invoke/MethodHandle;
            2   10     1        oldType  Ljava/lang/invoke/MethodType;
            3   10     2  oldReturnType  Ljava/lang/Class<*>;
            6   10     3        newType  Ljava/lang/invoke/MethodType;
            7   10     4         result  Ljava/lang/invoke/BoundMethodHandle;
            8   10     5          lform  Ljava/lang/invoke/LambdaForm;
    MethodParameters:
        Name  Flags
      target  

  public static java.lang.invoke.MethodHandle filterArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle[] filters
         0: .line 5530
            aload 0 /* target */
            iload 1 /* pos */
            aload 2 /* filters */
            invokestatic java.lang.invoke.MethodHandles.filterArgumentsCheckArity:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
         1: .line 5531
            aload 0 /* target */
            astore 3 /* adapter */
        start local 3 // java.lang.invoke.MethodHandle adapter
         2: .line 5534
            iconst_0
            istore 4 /* index */
        start local 4 // int index
         3: .line 5535
            aload 2 /* filters */
            arraylength
            newarray 10
            astore 5 /* positions */
        start local 5 // int[] positions
         4: .line 5536
            aconst_null
            astore 6 /* filter */
        start local 6 // java.lang.invoke.MethodHandle filter
         5: .line 5540
            aload 2 /* filters */
            arraylength
            iconst_1
            isub
            istore 7 /* i */
        start local 7 // int i
         6: goto 20
         7: .line 5541
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int int[] java.lang.invoke.MethodHandle int
      StackMap stack:
            aload 2 /* filters */
            iload 7 /* i */
            aaload
            astore 8 /* newFilter */
        start local 8 // java.lang.invoke.MethodHandle newFilter
         8: .line 5542
            aload 8 /* newFilter */
            ifnonnull 9
            goto 19
         9: .line 5545
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            aload 6 /* filter */
            aload 8 /* newFilter */
            if_acmpeq 17
        10: .line 5546
            aload 6 /* filter */
            ifnull 15
        11: .line 5547
            iload 4 /* index */
            iconst_1
            if_icmple 14
        12: .line 5548
            aload 3 /* adapter */
            aload 6 /* filter */
            aload 5 /* positions */
            iload 4 /* index */
            invokestatic java.util.Arrays.copyOf:([II)[I
            invokestatic java.lang.invoke.MethodHandles.filterRepeatedArgument:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
            astore 3 /* adapter */
        13: .line 5549
            goto 15
        14: .line 5550
      StackMap locals:
      StackMap stack:
            aload 3 /* adapter */
            aload 5 /* positions */
            iconst_0
            iaload
            iconst_1
            isub
            aload 6 /* filter */
            invokestatic java.lang.invoke.MethodHandles.filterArgument:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* adapter */
        15: .line 5553
      StackMap locals:
      StackMap stack:
            aload 8 /* newFilter */
            astore 6 /* filter */
        16: .line 5554
            iconst_0
            istore 4 /* index */
        17: .line 5557
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            iload 1 /* pos */
            iload 7 /* i */
            iadd
            aload 8 /* newFilter */
            invokestatic java.lang.invoke.MethodHandles.filterArgumentChecks:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
        18: .line 5558
            aload 5 /* positions */
            iload 4 /* index */
            iinc 4 /* index */ 1
            iload 1 /* pos */
            iload 7 /* i */
            iadd
            iconst_1
            iadd
            iastore
        end local 8 // java.lang.invoke.MethodHandle newFilter
        19: .line 5540
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ -1
      StackMap locals:
      StackMap stack:
        20: iload 7 /* i */
            ifge 7
        end local 7 // int i
        21: .line 5560
            iload 4 /* index */
            iconst_1
            if_icmple 24
        22: .line 5561
            aload 3 /* adapter */
            aload 6 /* filter */
            aload 5 /* positions */
            iload 4 /* index */
            invokestatic java.util.Arrays.copyOf:([II)[I
            invokestatic java.lang.invoke.MethodHandles.filterRepeatedArgument:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
            astore 3 /* adapter */
        23: .line 5562
            goto 26
      StackMap locals:
      StackMap stack:
        24: iload 4 /* index */
            iconst_1
            if_icmpne 26
        25: .line 5563
            aload 3 /* adapter */
            aload 5 /* positions */
            iconst_0
            iaload
            iconst_1
            isub
            aload 6 /* filter */
            invokestatic java.lang.invoke.MethodHandles.filterArgument:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* adapter */
        26: .line 5565
      StackMap locals:
      StackMap stack:
            aload 3 /* adapter */
            areturn
        end local 6 // java.lang.invoke.MethodHandle filter
        end local 5 // int[] positions
        end local 4 // int index
        end local 3 // java.lang.invoke.MethodHandle adapter
        end local 2 // java.lang.invoke.MethodHandle[] filters
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   27     0     target  Ljava/lang/invoke/MethodHandle;
            0   27     1        pos  I
            0   27     2    filters  [Ljava/lang/invoke/MethodHandle;
            2   27     3    adapter  Ljava/lang/invoke/MethodHandle;
            3   27     4      index  I
            4   27     5  positions  [I
            5   27     6     filter  Ljava/lang/invoke/MethodHandle;
            6   21     7          i  I
            8   19     8  newFilter  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
         Name  Flags
      target   
      pos      
      filters  

  private static java.lang.invoke.MethodHandle filterRepeatedArgument(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, int[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // java.lang.invoke.MethodHandle adapter
        start local 1 // java.lang.invoke.MethodHandle filter
        start local 2 // int[] positions
         0: .line 5569
            aload 0 /* adapter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         1: .line 5570
            aload 1 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* filterType */
        start local 4 // java.lang.invoke.MethodType filterType
         2: .line 5571
            aload 0 /* adapter */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        start local 5 // java.lang.invoke.BoundMethodHandle result
         3: .line 5572
            aload 4 /* filterType */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 6 /* newParamType */
        start local 6 // java.lang.Class newParamType
         4: .line 5574
            aload 3 /* targetType */
            invokevirtual java.lang.invoke.MethodType.ptypes:()[Ljava/lang/Class;
            invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 7 /* ptypes */
        start local 7 // java.lang.Class[] ptypes
         5: .line 5575
            aload 2 /* positions */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 9
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle int[] java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.Class java.lang.Class[] top int int int[]
      StackMap stack:
         6: aload 11
            iload 9
            iaload
            istore 8 /* pos */
        start local 8 // int pos
         7: .line 5576
            aload 7 /* ptypes */
            iload 8 /* pos */
            iconst_1
            isub
            aload 6 /* newParamType */
            aastore
        end local 8 // int pos
         8: .line 5575
            iinc 9 1
      StackMap locals:
      StackMap stack:
         9: iload 9
            iload 10
            if_icmplt 6
        10: .line 5578
            aload 3 /* targetType */
            invokevirtual java.lang.invoke.MethodType.rtype:()Ljava/lang/Class;
            aload 7 /* ptypes */
            iconst_1
            invokestatic java.lang.invoke.MethodType.makeImpl:(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
            astore 8 /* newType */
        start local 8 // java.lang.invoke.MethodType newType
        11: .line 5580
            aload 5 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            aload 6 /* newParamType */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            aload 2 /* positions */
            invokevirtual java.lang.invoke.LambdaFormEditor.filterRepeatedArgumentForm:(Ljava/lang/invoke/LambdaForm$BasicType;[I)Ljava/lang/invoke/LambdaForm;
            astore 9 /* lform */
        start local 9 // java.lang.invoke.LambdaForm lform
        12: .line 5581
            aload 5 /* result */
            aload 8 /* newType */
            aload 9 /* lform */
            aload 1 /* filter */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            areturn
        end local 9 // java.lang.invoke.LambdaForm lform
        end local 8 // java.lang.invoke.MethodType newType
        end local 7 // java.lang.Class[] ptypes
        end local 6 // java.lang.Class newParamType
        end local 5 // java.lang.invoke.BoundMethodHandle result
        end local 4 // java.lang.invoke.MethodType filterType
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // int[] positions
        end local 1 // java.lang.invoke.MethodHandle filter
        end local 0 // java.lang.invoke.MethodHandle adapter
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0       adapter  Ljava/lang/invoke/MethodHandle;
            0   13     1        filter  Ljava/lang/invoke/MethodHandle;
            0   13     2     positions  [I
            1   13     3    targetType  Ljava/lang/invoke/MethodType;
            2   13     4    filterType  Ljava/lang/invoke/MethodType;
            3   13     5        result  Ljava/lang/invoke/BoundMethodHandle;
            4   13     6  newParamType  Ljava/lang/Class<*>;
            5   13     7        ptypes  [Ljava/lang/Class;
            7    8     8           pos  I
           11   13     8       newType  Ljava/lang/invoke/MethodType;
           12   13     9         lform  Ljava/lang/invoke/LambdaForm;
    MethodParameters:
           Name  Flags
      adapter    
      filter     
      positions  

  static java.lang.invoke.MethodHandle filterArgument(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle filter
         0: .line 5586
            aload 0 /* target */
            iload 1 /* pos */
            aload 2 /* filter */
            invokestatic java.lang.invoke.MethodHandles.filterArgumentChecks:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
         1: .line 5587
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         2: .line 5588
            aload 2 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* filterType */
        start local 4 // java.lang.invoke.MethodType filterType
         3: .line 5589
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        start local 5 // java.lang.invoke.BoundMethodHandle result
         4: .line 5590
            aload 4 /* filterType */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 6 /* newParamType */
        start local 6 // java.lang.Class newParamType
         5: .line 5591
            aload 5 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 1 /* pos */
            iadd
            aload 6 /* newParamType */
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            invokevirtual java.lang.invoke.LambdaFormEditor.filterArgumentForm:(ILjava/lang/invoke/LambdaForm$BasicType;)Ljava/lang/invoke/LambdaForm;
            astore 7 /* lform */
        start local 7 // java.lang.invoke.LambdaForm lform
         6: .line 5592
            aload 3 /* targetType */
            iload 1 /* pos */
            aload 6 /* newParamType */
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 8 /* newType */
        start local 8 // java.lang.invoke.MethodType newType
         7: .line 5593
            aload 5 /* result */
            aload 8 /* newType */
            aload 7 /* lform */
            aload 2 /* filter */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
         8: .line 5594
            aload 5 /* result */
            areturn
        end local 8 // java.lang.invoke.MethodType newType
        end local 7 // java.lang.invoke.LambdaForm lform
        end local 6 // java.lang.Class newParamType
        end local 5 // java.lang.invoke.BoundMethodHandle result
        end local 4 // java.lang.invoke.MethodType filterType
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // java.lang.invoke.MethodHandle filter
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0        target  Ljava/lang/invoke/MethodHandle;
            0    9     1           pos  I
            0    9     2        filter  Ljava/lang/invoke/MethodHandle;
            2    9     3    targetType  Ljava/lang/invoke/MethodType;
            3    9     4    filterType  Ljava/lang/invoke/MethodType;
            4    9     5        result  Ljava/lang/invoke/BoundMethodHandle;
            5    9     6  newParamType  Ljava/lang/Class<*>;
            6    9     7         lform  Ljava/lang/invoke/LambdaForm;
            7    9     8       newType  Ljava/lang/invoke/MethodType;
    MethodParameters:
        Name  Flags
      target  
      pos     
      filter  

  private static void filterArgumentsCheckArity(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle[] filters
         0: .line 5598
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         1: .line 5599
            aload 3 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* maxPos */
        start local 4 // int maxPos
         2: .line 5600
            iload 1 /* pos */
            aload 2 /* filters */
            arraylength
            iadd
            iload 4 /* maxPos */
            if_icmple 4
         3: .line 5601
            ldc "too many filters"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 5602
      StackMap locals: java.lang.invoke.MethodType int
      StackMap stack:
            return
        end local 4 // int maxPos
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // java.lang.invoke.MethodHandle[] filters
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0      target  Ljava/lang/invoke/MethodHandle;
            0    5     1         pos  I
            0    5     2     filters  [Ljava/lang/invoke/MethodHandle;
            1    5     3  targetType  Ljava/lang/invoke/MethodType;
            2    5     4      maxPos  I
    MethodParameters:
         Name  Flags
      target   
      pos      
      filters  

  private static void filterArgumentChecks(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle filter
         0: .line 5605
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         1: .line 5606
            aload 2 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* filterType */
        start local 4 // java.lang.invoke.MethodType filterType
         2: .line 5607
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            if_icmpne 4
         3: .line 5608
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 3 /* targetType */
            iload 1 /* pos */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 5
         4: .line 5609
      StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType
      StackMap stack:
            ldc "target and filter types do not match"
            aload 3 /* targetType */
            aload 4 /* filterType */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         5: .line 5610
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.invoke.MethodType filterType
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // java.lang.invoke.MethodHandle filter
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0      target  Ljava/lang/invoke/MethodHandle;
            0    6     1         pos  I
            0    6     2      filter  Ljava/lang/invoke/MethodHandle;
            1    6     3  targetType  Ljava/lang/invoke/MethodType;
            2    6     4  filterType  Ljava/lang/invoke/MethodType;
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
        Name  Flags
      target  
      pos     
      filter  

  public static java.lang.invoke.MethodHandle collectArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle filter
         0: .line 5732
            aload 0 /* target */
            iload 1 /* pos */
            aload 2 /* filter */
            invokestatic java.lang.invoke.MethodHandles.collectArgumentsChecks:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            astore 3 /* newType */
        start local 3 // java.lang.invoke.MethodType newType
         1: .line 5733
            aload 2 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* collectorType */
        start local 4 // java.lang.invoke.MethodType collectorType
         2: .line 5734
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 5 /* result */
        start local 5 // java.lang.invoke.BoundMethodHandle result
         3: .line 5736
            aload 4 /* collectorType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 7
            aload 2 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.intrinsicName:()Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
            getstatic java.lang.invoke.MethodHandleImpl$Intrinsic.NEW_ARRAY:Ljava/lang/invoke/MethodHandleImpl$Intrinsic;
            if_acmpne 7
         4: .line 5737
            aload 5 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 1 /* pos */
            iadd
            aload 2 /* filter */
            invokevirtual java.lang.invoke.LambdaFormEditor.collectArgumentArrayForm:(ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/LambdaForm;
            astore 6 /* lform */
        start local 6 // java.lang.invoke.LambdaForm lform
         5: .line 5738
            aload 6 /* lform */
            ifnull 7
         6: .line 5739
            aload 5 /* result */
            aload 3 /* newType */
            aload 6 /* lform */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWith:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;)Ljava/lang/invoke/BoundMethodHandle;
            areturn
        end local 6 // java.lang.invoke.LambdaForm lform
         7: .line 5742
      StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle
      StackMap stack:
            aload 5 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 1 /* pos */
            iadd
            aload 4 /* collectorType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.LambdaFormEditor.collectArgumentsForm:(ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/LambdaForm;
            astore 6 /* lform */
        start local 6 // java.lang.invoke.LambdaForm lform
         8: .line 5743
            aload 5 /* result */
            aload 3 /* newType */
            aload 6 /* lform */
            aload 2 /* filter */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            areturn
        end local 6 // java.lang.invoke.LambdaForm lform
        end local 5 // java.lang.invoke.BoundMethodHandle result
        end local 4 // java.lang.invoke.MethodType collectorType
        end local 3 // java.lang.invoke.MethodType newType
        end local 2 // java.lang.invoke.MethodHandle filter
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0         target  Ljava/lang/invoke/MethodHandle;
            0    9     1            pos  I
            0    9     2         filter  Ljava/lang/invoke/MethodHandle;
            1    9     3        newType  Ljava/lang/invoke/MethodType;
            2    9     4  collectorType  Ljava/lang/invoke/MethodType;
            3    9     5         result  Ljava/lang/invoke/BoundMethodHandle;
            5    7     6          lform  Ljava/lang/invoke/LambdaForm;
            8    9     6          lform  Ljava/lang/invoke/LambdaForm;
    MethodParameters:
        Name  Flags
      target  
      pos     
      filter  

  private static java.lang.invoke.MethodType collectArgumentsChecks(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle filter
         0: .line 5747
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         1: .line 5748
            aload 2 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* filterType */
        start local 4 // java.lang.invoke.MethodType filterType
         2: .line 5749
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 5 /* rtype */
        start local 5 // java.lang.Class rtype
         3: .line 5750
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 6 /* filterArgs */
        start local 6 // java.util.List filterArgs
         4: .line 5751
            aload 5 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 6
         5: .line 5752
            aload 3 /* targetType */
            iload 1 /* pos */
            aload 6 /* filterArgs */
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
            areturn
         6: .line 5754
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.Class java.util.List
      StackMap stack:
            aload 5 /* rtype */
            aload 3 /* targetType */
            iload 1 /* pos */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 8
         7: .line 5755
            ldc "target and filter types do not match"
            aload 3 /* targetType */
            aload 4 /* filterType */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         8: .line 5757
      StackMap locals:
      StackMap stack:
            aload 3 /* targetType */
            iload 1 /* pos */
            iload 1 /* pos */
            iconst_1
            iadd
            invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
            iload 1 /* pos */
            aload 6 /* filterArgs */
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
            areturn
        end local 6 // java.util.List filterArgs
        end local 5 // java.lang.Class rtype
        end local 4 // java.lang.invoke.MethodType filterType
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // java.lang.invoke.MethodHandle filter
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0      target  Ljava/lang/invoke/MethodHandle;
            0    9     1         pos  I
            0    9     2      filter  Ljava/lang/invoke/MethodHandle;
            1    9     3  targetType  Ljava/lang/invoke/MethodType;
            2    9     4  filterType  Ljava/lang/invoke/MethodType;
            3    9     5       rtype  Ljava/lang/Class<*>;
            4    9     6  filterArgs  Ljava/util/List<Ljava/lang/Class<*>;>;
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
        Name  Flags
      target  
      pos     
      filter  

  public static java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle filter
         0: .line 5825
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 2 /* targetType */
        start local 2 // java.lang.invoke.MethodType targetType
         1: .line 5826
            aload 1 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* filterType */
        start local 3 // java.lang.invoke.MethodType filterType
         2: .line 5827
            aload 2 /* targetType */
            aload 3 /* filterType */
            invokestatic java.lang.invoke.MethodHandles.filterReturnValueChecks:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
         3: .line 5828
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
        start local 4 // java.lang.invoke.BoundMethodHandle result
         4: .line 5829
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.LambdaForm$BasicType.basicType:(Ljava/lang/Class;)Ljava/lang/invoke/LambdaForm$BasicType;
            astore 5 /* rtype */
        start local 5 // java.lang.invoke.LambdaForm$BasicType rtype
         5: .line 5830
            aload 4 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            aload 5 /* rtype */
            iconst_0
            invokevirtual java.lang.invoke.LambdaFormEditor.filterReturnForm:(Ljava/lang/invoke/LambdaForm$BasicType;Z)Ljava/lang/invoke/LambdaForm;
            astore 6 /* lform */
        start local 6 // java.lang.invoke.LambdaForm lform
         6: .line 5831
            aload 2 /* targetType */
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 7 /* newType */
        start local 7 // java.lang.invoke.MethodType newType
         7: .line 5832
            aload 4 /* result */
            aload 7 /* newType */
            aload 6 /* lform */
            aload 1 /* filter */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
         8: .line 5833
            aload 4 /* result */
            areturn
        end local 7 // java.lang.invoke.MethodType newType
        end local 6 // java.lang.invoke.LambdaForm lform
        end local 5 // java.lang.invoke.LambdaForm$BasicType rtype
        end local 4 // java.lang.invoke.BoundMethodHandle result
        end local 3 // java.lang.invoke.MethodType filterType
        end local 2 // java.lang.invoke.MethodType targetType
        end local 1 // java.lang.invoke.MethodHandle filter
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0      target  Ljava/lang/invoke/MethodHandle;
            0    9     1      filter  Ljava/lang/invoke/MethodHandle;
            1    9     2  targetType  Ljava/lang/invoke/MethodType;
            2    9     3  filterType  Ljava/lang/invoke/MethodType;
            4    9     4      result  Ljava/lang/invoke/BoundMethodHandle;
            5    9     5       rtype  Ljava/lang/invoke/LambdaForm$BasicType;
            6    9     6       lform  Ljava/lang/invoke/LambdaForm;
            7    9     7     newType  Ljava/lang/invoke/MethodType;
    MethodParameters:
        Name  Flags
      target  
      filter  

  private static void filterReturnValueChecks(java.lang.invoke.MethodType, java.lang.invoke.MethodType);
    descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.invoke.MethodType targetType
        start local 1 // java.lang.invoke.MethodType filterType
         0: .line 5837
            aload 0 /* targetType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 2 /* rtype */
        start local 2 // java.lang.Class rtype
         1: .line 5838
            aload 1 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* filterValues */
        start local 3 // int filterValues
         2: .line 5839
            iload 3 /* filterValues */
            ifne 4
         3: .line 5840
            aload 2 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            goto 5
         4: .line 5841
      StackMap locals: java.lang.Class int
      StackMap stack:
            aload 2 /* rtype */
            aload 1 /* filterType */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpne 5
            iload 3 /* filterValues */
            iconst_1
            if_icmpeq 6
         5: .line 5842
      StackMap locals:
      StackMap stack:
            ldc "target and filter types do not match"
            aload 0 /* targetType */
            aload 1 /* filterType */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         6: .line 5843
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int filterValues
        end local 2 // java.lang.Class rtype
        end local 1 // java.lang.invoke.MethodType filterType
        end local 0 // java.lang.invoke.MethodType targetType
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0    targetType  Ljava/lang/invoke/MethodType;
            0    7     1    filterType  Ljava/lang/invoke/MethodType;
            1    7     2         rtype  Ljava/lang/Class<*>;
            2    7     3  filterValues  I
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
            Name  Flags
      targetType  
      filterType  

  static java.lang.invoke.MethodHandle collectReturnValue(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle filter
         0: .line 5865
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 2 /* targetType */
        start local 2 // java.lang.invoke.MethodType targetType
         1: .line 5866
            aload 1 /* filter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* filterType */
        start local 3 // java.lang.invoke.MethodType filterType
         2: .line 5867
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
        start local 4 // java.lang.invoke.BoundMethodHandle result
         3: .line 5868
            aload 4 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.LambdaFormEditor.collectReturnValueForm:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/LambdaForm;
            astore 5 /* lform */
        start local 5 // java.lang.invoke.LambdaForm lform
         4: .line 5869
            aload 2 /* targetType */
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 6 /* newType */
        start local 6 // java.lang.invoke.MethodType newType
         5: .line 5870
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 11
         6: .line 5871
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         7: goto 10
         8: .line 5872
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.BoundMethodHandle java.lang.invoke.LambdaForm java.lang.invoke.MethodType int
      StackMap stack:
            aload 6 /* newType */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 3 /* filterType */
            iload 7 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aastore
            invokevirtual java.lang.invoke.MethodType.appendParameterTypes:([Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 6 /* newType */
         9: .line 5871
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 7 /* i */
            aload 3 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            if_icmplt 8
        end local 7 // int i
        11: .line 5875
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            aload 6 /* newType */
            aload 5 /* lform */
            aload 1 /* filter */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 4 /* result */
        12: .line 5876
            aload 4 /* result */
            areturn
        end local 6 // java.lang.invoke.MethodType newType
        end local 5 // java.lang.invoke.LambdaForm lform
        end local 4 // java.lang.invoke.BoundMethodHandle result
        end local 3 // java.lang.invoke.MethodType filterType
        end local 2 // java.lang.invoke.MethodType targetType
        end local 1 // java.lang.invoke.MethodHandle filter
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0      target  Ljava/lang/invoke/MethodHandle;
            0   13     1      filter  Ljava/lang/invoke/MethodHandle;
            1   13     2  targetType  Ljava/lang/invoke/MethodType;
            2   13     3  filterType  Ljava/lang/invoke/MethodType;
            3   13     4      result  Ljava/lang/invoke/BoundMethodHandle;
            4   13     5       lform  Ljava/lang/invoke/LambdaForm;
            5   13     6     newType  Ljava/lang/invoke/MethodType;
            7   11     7           i  I
    MethodParameters:
        Name  Flags
      target  
      filter  

  public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle combiner
         0: .line 5967
            aload 0 /* target */
            iconst_0
            aload 1 /* combiner */
            invokestatic java.lang.invoke.MethodHandles.foldArguments:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // java.lang.invoke.MethodHandle combiner
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0    target  Ljava/lang/invoke/MethodHandle;
            0    1     1  combiner  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
          Name  Flags
      target    
      combiner  

  public static java.lang.invoke.MethodHandle foldArguments(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle combiner
         0: .line 6041
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* targetType */
        start local 3 // java.lang.invoke.MethodType targetType
         1: .line 6042
            aload 2 /* combiner */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* combinerType */
        start local 4 // java.lang.invoke.MethodType combinerType
         2: .line 6043
            iload 1 /* pos */
            aload 3 /* targetType */
            aload 4 /* combinerType */
            invokestatic java.lang.invoke.MethodHandles.foldArgumentChecks:(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
            astore 5 /* rtype */
        start local 5 // java.lang.Class rtype
         3: .line 6044
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 6 /* result */
        start local 6 // java.lang.invoke.BoundMethodHandle result
         4: .line 6045
            aload 5 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 5
            iconst_1
            goto 6
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.Class java.lang.invoke.BoundMethodHandle
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: istore 7 /* dropResult */
        start local 7 // boolean dropResult
         7: .line 6046
            aload 6 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 1 /* pos */
            iadd
            iload 7 /* dropResult */
            aload 4 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.LambdaFormEditor.foldArgumentsForm:(IZLjava/lang/invoke/MethodType;)Ljava/lang/invoke/LambdaForm;
            astore 8 /* lform */
        start local 8 // java.lang.invoke.LambdaForm lform
         8: .line 6047
            aload 3 /* targetType */
            astore 9 /* newType */
        start local 9 // java.lang.invoke.MethodType newType
         9: .line 6048
            iload 7 /* dropResult */
            ifne 11
        10: .line 6049
            aload 9 /* newType */
            iload 1 /* pos */
            iload 1 /* pos */
            iconst_1
            iadd
            invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
            astore 9 /* newType */
        11: .line 6051
      StackMap locals: int java.lang.invoke.LambdaForm java.lang.invoke.MethodType
      StackMap stack:
            aload 6 /* result */
            aload 9 /* newType */
            aload 8 /* lform */
            aload 2 /* combiner */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 6 /* result */
        12: .line 6052
            aload 6 /* result */
            areturn
        end local 9 // java.lang.invoke.MethodType newType
        end local 8 // java.lang.invoke.LambdaForm lform
        end local 7 // boolean dropResult
        end local 6 // java.lang.invoke.BoundMethodHandle result
        end local 5 // java.lang.Class rtype
        end local 4 // java.lang.invoke.MethodType combinerType
        end local 3 // java.lang.invoke.MethodType targetType
        end local 2 // java.lang.invoke.MethodHandle combiner
        end local 1 // int pos
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0        target  Ljava/lang/invoke/MethodHandle;
            0   13     1           pos  I
            0   13     2      combiner  Ljava/lang/invoke/MethodHandle;
            1   13     3    targetType  Ljava/lang/invoke/MethodType;
            2   13     4  combinerType  Ljava/lang/invoke/MethodType;
            3   13     5         rtype  Ljava/lang/Class<*>;
            4   13     6        result  Ljava/lang/invoke/BoundMethodHandle;
            7   13     7    dropResult  Z
            8   13     8         lform  Ljava/lang/invoke/LambdaForm;
            9   13     9       newType  Ljava/lang/invoke/MethodType;
    MethodParameters:
          Name  Flags
      target    
      pos       
      combiner  

  private static java.lang.Class<?> foldArgumentChecks(int, java.lang.invoke.MethodType, java.lang.invoke.MethodType);
    descriptor: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // int foldPos
        start local 1 // java.lang.invoke.MethodType targetType
        start local 2 // java.lang.invoke.MethodType combinerType
         0: .line 6056
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* foldArgs */
        start local 3 // int foldArgs
         1: .line 6057
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* rtype */
        start local 4 // java.lang.Class rtype
         2: .line 6058
            aload 4 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 3
            iconst_0
            goto 4
      StackMap locals: int java.lang.Class
      StackMap stack:
         3: iconst_1
      StackMap locals:
      StackMap stack: int
         4: istore 5 /* foldVals */
        start local 5 // int foldVals
         5: .line 6059
            iload 0 /* foldPos */
            iload 5 /* foldVals */
            iadd
            istore 6 /* afterInsertPos */
        start local 6 // int afterInsertPos
         6: .line 6060
            aload 1 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iload 6 /* afterInsertPos */
            iload 3 /* foldArgs */
            iadd
            if_icmplt 7
            iconst_1
            goto 8
      StackMap locals: int int
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 7 /* ok */
        start local 7 // boolean ok
         9: .line 6061
            iload 7 /* ok */
            ifeq 17
        10: .line 6062
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        11: goto 16
        12: .line 6063
      StackMap locals: int int
      StackMap stack:
            aload 2 /* combinerType */
            iload 8 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aload 1 /* targetType */
            iload 8 /* i */
            iload 6 /* afterInsertPos */
            iadd
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 15
        13: .line 6064
            iconst_0
            istore 7 /* ok */
        14: .line 6065
            goto 17
        15: .line 6062
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 8 /* i */
            iload 3 /* foldArgs */
            if_icmplt 12
        end local 8 // int i
        17: .line 6069
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifeq 19
            iload 5 /* foldVals */
            ifeq 19
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 1 /* targetType */
            iload 0 /* foldPos */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 19
        18: .line 6070
            iconst_0
            istore 7 /* ok */
        19: .line 6071
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifne 21
        20: .line 6072
            ldc "target and combiner types"
            aload 1 /* targetType */
            aload 2 /* combinerType */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        21: .line 6073
      StackMap locals:
      StackMap stack:
            aload 4 /* rtype */
            areturn
        end local 7 // boolean ok
        end local 6 // int afterInsertPos
        end local 5 // int foldVals
        end local 4 // java.lang.Class rtype
        end local 3 // int foldArgs
        end local 2 // java.lang.invoke.MethodType combinerType
        end local 1 // java.lang.invoke.MethodType targetType
        end local 0 // int foldPos
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   22     0         foldPos  I
            0   22     1      targetType  Ljava/lang/invoke/MethodType;
            0   22     2    combinerType  Ljava/lang/invoke/MethodType;
            1   22     3        foldArgs  I
            2   22     4           rtype  Ljava/lang/Class<*>;
            5   22     5        foldVals  I
            6   22     6  afterInsertPos  I
            9   22     7              ok  Z
           11   17     8               i  I
    Signature: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class<*>;
    MethodParameters:
              Name  Flags
      foldPos       
      targetType    
      combinerType  

  static java.lang.invoke.MethodHandle filterArgumentsWithCombiner(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle, int[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int position
        start local 2 // java.lang.invoke.MethodHandle combiner
        start local 3 // int[] argPositions
         0: .line 6095
            iconst_1
            aload 0 /* target */
            iload 1 /* position */
            aload 2 /* combiner */
            aload 3 /* argPositions */
            invokestatic java.lang.invoke.MethodHandles.argumentsWithCombiner:(ZLjava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // int[] argPositions
        end local 2 // java.lang.invoke.MethodHandle combiner
        end local 1 // int position
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0        target  Ljava/lang/invoke/MethodHandle;
            0    1     1      position  I
            0    1     2      combiner  Ljava/lang/invoke/MethodHandle;
            0    1     3  argPositions  [I
    MethodParameters:
              Name  Flags
      target        
      position      
      combiner      
      argPositions  

  static java.lang.invoke.MethodHandle foldArgumentsWithCombiner(java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle, int[]);
    descriptor: (Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int position
        start local 2 // java.lang.invoke.MethodHandle combiner
        start local 3 // int[] argPositions
         0: .line 6118
            iconst_0
            aload 0 /* target */
            iload 1 /* position */
            aload 2 /* combiner */
            aload 3 /* argPositions */
            invokestatic java.lang.invoke.MethodHandles.argumentsWithCombiner:(ZLjava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // int[] argPositions
        end local 2 // java.lang.invoke.MethodHandle combiner
        end local 1 // int position
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0        target  Ljava/lang/invoke/MethodHandle;
            0    1     1      position  I
            0    1     2      combiner  Ljava/lang/invoke/MethodHandle;
            0    1     3  argPositions  [I
    MethodParameters:
              Name  Flags
      target        
      position      
      combiner      
      argPositions  

  private static java.lang.invoke.MethodHandle argumentsWithCombiner(boolean, java.lang.invoke.MethodHandle, int, java.lang.invoke.MethodHandle, int[]);
    descriptor: (ZLjava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;[I)Ljava/lang/invoke/MethodHandle;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=12, args_size=5
        start local 0 // boolean filter
        start local 1 // java.lang.invoke.MethodHandle target
        start local 2 // int position
        start local 3 // java.lang.invoke.MethodHandle combiner
        start local 4 // int[] argPositions
         0: .line 6122
            aload 1 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 5 /* targetType */
        start local 5 // java.lang.invoke.MethodType targetType
         1: .line 6123
            aload 3 /* combiner */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 6 /* combinerType */
        start local 6 // java.lang.invoke.MethodType combinerType
         2: .line 6124
            iload 2 /* position */
            iload 0 /* filter */
            aload 5 /* targetType */
            aload 6 /* combinerType */
            aload 4 /* argPositions */
            invokestatic java.lang.invoke.MethodHandles.argumentsWithCombinerChecks:(IZLjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class;
            astore 7 /* rtype */
        start local 7 // java.lang.Class rtype
         3: .line 6125
            aload 1 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 8 /* result */
        start local 8 // java.lang.invoke.BoundMethodHandle result
         4: .line 6127
            aload 5 /* targetType */
            astore 9 /* newType */
        start local 9 // java.lang.invoke.MethodType newType
         5: .line 6129
            iload 0 /* filter */
            ifeq 8
         6: .line 6130
            aload 8 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 2 /* position */
            iadd
            aload 6 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            aload 4 /* argPositions */
            invokevirtual java.lang.invoke.LambdaFormEditor.filterArgumentsForm:(ILjava/lang/invoke/MethodType;[I)Ljava/lang/invoke/LambdaForm;
            astore 10 /* lform */
        start local 10 // java.lang.invoke.LambdaForm lform
         7: .line 6131
            goto 14
        end local 10 // java.lang.invoke.LambdaForm lform
         8: .line 6132
      StackMap locals: int java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle int[] java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.Class java.lang.invoke.BoundMethodHandle java.lang.invoke.MethodType
      StackMap stack:
            aload 7 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 11 /* dropResult */
        start local 11 // boolean dropResult
        11: .line 6133
            aload 8 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 2 /* position */
            iadd
            iload 11 /* dropResult */
            aload 6 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            aload 4 /* argPositions */
            invokevirtual java.lang.invoke.LambdaFormEditor.foldArgumentsForm:(IZLjava/lang/invoke/MethodType;[I)Ljava/lang/invoke/LambdaForm;
            astore 10 /* lform */
        start local 10 // java.lang.invoke.LambdaForm lform
        12: .line 6134
            iload 11 /* dropResult */
            ifne 14
        13: .line 6135
            aload 9 /* newType */
            iload 2 /* position */
            iload 2 /* position */
            iconst_1
            iadd
            invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
            astore 9 /* newType */
        end local 11 // boolean dropResult
        14: .line 6138
      StackMap locals: java.lang.invoke.LambdaForm
      StackMap stack:
            aload 8 /* result */
            aload 9 /* newType */
            aload 10 /* lform */
            aload 3 /* combiner */
            invokevirtual java.lang.invoke.BoundMethodHandle.copyWithExtendL:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/LambdaForm;Ljava/lang/Object;)Ljava/lang/invoke/BoundMethodHandle;
            astore 8 /* result */
        15: .line 6139
            aload 8 /* result */
            areturn
        end local 10 // java.lang.invoke.LambdaForm lform
        end local 9 // java.lang.invoke.MethodType newType
        end local 8 // java.lang.invoke.BoundMethodHandle result
        end local 7 // java.lang.Class rtype
        end local 6 // java.lang.invoke.MethodType combinerType
        end local 5 // java.lang.invoke.MethodType targetType
        end local 4 // int[] argPositions
        end local 3 // java.lang.invoke.MethodHandle combiner
        end local 2 // int position
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // boolean filter
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0        filter  Z
            0   16     1        target  Ljava/lang/invoke/MethodHandle;
            0   16     2      position  I
            0   16     3      combiner  Ljava/lang/invoke/MethodHandle;
            0   16     4  argPositions  [I
            1   16     5    targetType  Ljava/lang/invoke/MethodType;
            2   16     6  combinerType  Ljava/lang/invoke/MethodType;
            3   16     7         rtype  Ljava/lang/Class<*>;
            4   16     8        result  Ljava/lang/invoke/BoundMethodHandle;
            5   16     9       newType  Ljava/lang/invoke/MethodType;
            7    8    10         lform  Ljava/lang/invoke/LambdaForm;
           12   16    10         lform  Ljava/lang/invoke/LambdaForm;
           11   14    11    dropResult  Z
    MethodParameters:
              Name  Flags
      filter        
      target        
      position      
      combiner      
      argPositions  

  private static java.lang.Class<?> argumentsWithCombinerChecks(int, boolean, java.lang.invoke.MethodType, java.lang.invoke.MethodType, int[]);
    descriptor: (IZLjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=9, args_size=5
        start local 0 // int position
        start local 1 // boolean filter
        start local 2 // java.lang.invoke.MethodType targetType
        start local 3 // java.lang.invoke.MethodType combinerType
        start local 4 // int[] argPos
         0: .line 6143
            aload 3 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 5 /* combinerArgs */
        start local 5 // int combinerArgs
         1: .line 6144
            aload 4 /* argPos */
            arraylength
            iload 5 /* combinerArgs */
            if_icmpeq 3
         2: .line 6145
            ldc "combiner and argument map must be equal size"
            aload 3 /* combinerType */
            aload 4 /* argPos */
            arraylength
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         3: .line 6147
      StackMap locals: int
      StackMap stack:
            aload 3 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 6 /* rtype */
        start local 6 // java.lang.Class rtype
         4: .line 6149
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 15
         6: .line 6150
      StackMap locals: java.lang.Class int
      StackMap stack:
            aload 4 /* argPos */
            iload 7 /* i */
            iaload
            istore 8 /* arg */
        start local 8 // int arg
         7: .line 6151
            iload 8 /* arg */
            iflt 8
            iload 8 /* arg */
            aload 2 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 9
         8: .line 6152
      StackMap locals: int
      StackMap stack:
            ldc "arg outside of target parameterRange"
            aload 2 /* targetType */
            iload 8 /* arg */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         9: .line 6154
      StackMap locals:
      StackMap stack:
            aload 3 /* combinerType */
            iload 7 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aload 2 /* targetType */
            iload 8 /* arg */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 14
        10: .line 6155
            new java.lang.StringBuilder
            dup
            ldc "target argument type at position "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 8 /* arg */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        11: .line 6156
            ldc " must match combiner argument type at index "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 7 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* targetType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        12: .line 6157
            ldc " -> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* combinerType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", map: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* argPos */
            invokestatic java.util.Arrays.toString:([I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 6155
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 8 // int arg
        14: .line 6149
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 7 /* i */
            iload 5 /* combinerArgs */
            if_icmplt 6
        end local 7 // int i
        16: .line 6160
            iload 1 /* filter */
            ifeq 18
            aload 3 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 2 /* targetType */
            iload 0 /* position */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 18
        17: .line 6161
            ldc "target and combiner types"
            aload 2 /* targetType */
            aload 3 /* combinerType */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        18: .line 6163
      StackMap locals:
      StackMap stack:
            aload 6 /* rtype */
            areturn
        end local 6 // java.lang.Class rtype
        end local 5 // int combinerArgs
        end local 4 // int[] argPos
        end local 3 // java.lang.invoke.MethodType combinerType
        end local 2 // java.lang.invoke.MethodType targetType
        end local 1 // boolean filter
        end local 0 // int position
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   19     0      position  I
            0   19     1        filter  Z
            0   19     2    targetType  Ljava/lang/invoke/MethodType;
            0   19     3  combinerType  Ljava/lang/invoke/MethodType;
            0   19     4        argPos  [I
            1   19     5  combinerArgs  I
            4   19     6         rtype  Ljava/lang/Class<*>;
            5   16     7             i  I
            7   14     8           arg  I
    Signature: (IZLjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class<*>;
    MethodParameters:
              Name  Flags
      position      
      filter        
      targetType    
      combinerType  
      argPos        

  public static java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // java.lang.invoke.MethodHandle test
        start local 1 // java.lang.invoke.MethodHandle target
        start local 2 // java.lang.invoke.MethodHandle fallback
         0: .line 6207
            aload 0 /* test */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* gtype */
        start local 3 // java.lang.invoke.MethodType gtype
         1: .line 6208
            aload 1 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* ttype */
        start local 4 // java.lang.invoke.MethodType ttype
         2: .line 6209
            aload 2 /* fallback */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 5 /* ftype */
        start local 5 // java.lang.invoke.MethodType ftype
         3: .line 6210
            aload 4 /* ttype */
            aload 5 /* ftype */
            invokevirtual java.lang.invoke.MethodType.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 6211
            ldc "target and fallback types"
            aload 4 /* ttype */
            aload 5 /* ftype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         5: .line 6212
      StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType java.lang.invoke.MethodType
      StackMap stack:
            aload 3 /* gtype */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpeq 7
         6: .line 6213
            new java.lang.StringBuilder
            dup
            ldc "guard type is not a predicate "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* gtype */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         7: .line 6214
      StackMap locals:
      StackMap stack:
            aload 4 /* ttype */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 6 /* targs */
        start local 6 // java.util.List targs
         8: .line 6215
            aload 0 /* test */
            iconst_0
            aload 6 /* targs */
            iconst_0
            iconst_1
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;IZ)Ljava/lang/invoke/MethodHandle;
            astore 0 /* test */
         9: .line 6216
            aload 0 /* test */
            ifnonnull 11
        10: .line 6217
            ldc "target and test types"
            aload 4 /* ttype */
            aload 3 /* gtype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        11: .line 6219
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* test */
            aload 1 /* target */
            aload 2 /* fallback */
            invokestatic java.lang.invoke.MethodHandleImpl.makeGuardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 6 // java.util.List targs
        end local 5 // java.lang.invoke.MethodType ftype
        end local 4 // java.lang.invoke.MethodType ttype
        end local 3 // java.lang.invoke.MethodType gtype
        end local 2 // java.lang.invoke.MethodHandle fallback
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // java.lang.invoke.MethodHandle test
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      test  Ljava/lang/invoke/MethodHandle;
            0   12     1    target  Ljava/lang/invoke/MethodHandle;
            0   12     2  fallback  Ljava/lang/invoke/MethodHandle;
            1   12     3     gtype  Ljava/lang/invoke/MethodType;
            2   12     4     ttype  Ljava/lang/invoke/MethodType;
            3   12     5     ftype  Ljava/lang/invoke/MethodType;
            8   12     6     targs  Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
          Name  Flags
      test      
      target    
      fallback  

  static <T> java.lang.RuntimeException misMatchedTypes(java.lang.String, T, T);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.String what
        start local 1 // java.lang.Object t1
        start local 2 // java.lang.Object t2
         0: .line 6223
            new java.lang.StringBuilder
            dup
            aload 0 /* what */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " must match: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* t1 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " != "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* t2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            areturn
        end local 2 // java.lang.Object t2
        end local 1 // java.lang.Object t1
        end local 0 // java.lang.String what
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  what  Ljava/lang/String;
            0    1     1    t1  TT;
            0    1     2    t2  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;TT;TT;)Ljava/lang/RuntimeException;
    MethodParameters:
      Name  Flags
      what  
      t1    
      t2    

  public static java.lang.invoke.MethodHandle catchException(java.lang.invoke.MethodHandle, java.lang.Class<? extends java.lang.Throwable>, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.Class exType
        start local 2 // java.lang.invoke.MethodHandle handler
         0: .line 6279
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* ttype */
        start local 3 // java.lang.invoke.MethodType ttype
         1: .line 6280
            aload 2 /* handler */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* htype */
        start local 4 // java.lang.invoke.MethodType htype
         2: .line 6281
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 4
         3: .line 6282
            new java.lang.ClassCastException
            dup
            aload 1 /* exType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial java.lang.ClassCastException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 6283
      StackMap locals: java.lang.invoke.MethodType java.lang.invoke.MethodType
      StackMap stack:
            aload 4 /* htype */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            if_icmplt 6
         5: .line 6284
            aload 4 /* htype */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 7
         6: .line 6285
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "handler does not accept exception type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* exType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         7: .line 6286
      StackMap locals:
      StackMap stack:
            aload 4 /* htype */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 3 /* ttype */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            if_acmpeq 9
         8: .line 6287
            ldc "target and handler return types"
            aload 3 /* ttype */
            aload 4 /* htype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         9: .line 6288
      StackMap locals:
      StackMap stack:
            aload 2 /* handler */
            iconst_1
            aload 3 /* ttype */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            iconst_0
            iconst_1
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;IZ)Ljava/lang/invoke/MethodHandle;
            astore 2 /* handler */
        10: .line 6289
            aload 2 /* handler */
            ifnonnull 12
        11: .line 6290
            ldc "target and handler types"
            aload 3 /* ttype */
            aload 4 /* htype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        12: .line 6292
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            aload 1 /* exType */
            aload 2 /* handler */
            invokestatic java.lang.invoke.MethodHandleImpl.makeGuardWithCatch:(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 4 // java.lang.invoke.MethodType htype
        end local 3 // java.lang.invoke.MethodType ttype
        end local 2 // java.lang.invoke.MethodHandle handler
        end local 1 // java.lang.Class exType
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0   target  Ljava/lang/invoke/MethodHandle;
            0   13     1   exType  Ljava/lang/Class<+Ljava/lang/Throwable;>;
            0   13     2  handler  Ljava/lang/invoke/MethodHandle;
            1   13     3    ttype  Ljava/lang/invoke/MethodType;
            2   13     4    htype  Ljava/lang/invoke/MethodType;
    Signature: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Class<+Ljava/lang/Throwable;>;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
         Name  Flags
      target   
      exType   
      handler  

  public static java.lang.invoke.MethodHandle throwException(java.lang.Class<?>, java.lang.Class<? extends java.lang.Throwable>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Class returnType
        start local 1 // java.lang.Class exType
         0: .line 6308
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 6309
            new java.lang.ClassCastException
            dup
            aload 1 /* exType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial java.lang.ClassCastException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 6310
      StackMap locals:
      StackMap stack:
            aload 0 /* returnType */
            aload 1 /* exType */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandleImpl.throwException:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 1 // java.lang.Class exType
        end local 0 // java.lang.Class returnType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  returnType  Ljava/lang/Class<*>;
            0    3     1      exType  Ljava/lang/Class<+Ljava/lang/Throwable;>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<+Ljava/lang/Throwable;>;)Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      returnType  
      exType      

  public static java.lang.invoke.MethodHandle loop(java.lang.invoke.MethodHandle[][]);
    descriptor: ([[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=16, args_size=1
        start local 0 // java.lang.invoke.MethodHandle[][] clauses
         0: .line 6614
            aload 0 /* clauses */
            invokestatic java.lang.invoke.MethodHandles.loopChecks0:([[Ljava/lang/invoke/MethodHandle;)V
         1: .line 6616
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* init */
        start local 1 // java.util.List init
         2: .line 6617
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* step */
        start local 2 // java.util.List step
         3: .line 6618
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* pred */
        start local 3 // java.util.List pred
         4: .line 6619
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* fini */
        start local 4 // java.util.List fini
         5: .line 6621
            aload 0 /* clauses */
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$0([Ljava/lang/invoke/MethodHandle;)Z (6)
                  ([Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            aload 1 /* init */
            aload 2 /* step */
            aload 3 /* pred */
            aload 4 /* fini */
            invokedynamic accept(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  java/lang/invoke/MethodHandles.lambda$2(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;[Ljava/lang/invoke/MethodHandle;)V (6)
                  ([Ljava/lang/invoke/MethodHandle;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         6: .line 6628
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 7
            iconst_4
            anewarray java.util.List
            dup
            iconst_0
            aload 1 /* init */
            aastore
            dup
            iconst_1
            aload 2 /* step */
            aastore
            dup
            iconst_2
            aload 3 /* pred */
            aastore
            dup
            iconst_3
            aload 4 /* fini */
            aastore
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/List.size()I (9 itf)
                  (Ljava/util/List;)Ljava/lang/Integer;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.distinct:()Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.count:()J
            lconst_1
            lcmp
            ifeq 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 6629
      StackMap locals: java.lang.invoke.MethodHandle[][] java.util.List java.util.List java.util.List java.util.List
      StackMap stack:
            aload 1 /* init */
            invokeinterface java.util.List.size:()I
            istore 5 /* nclauses */
        start local 5 // int nclauses
         8: .line 6632
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* iterationVariableTypes */
        start local 6 // java.util.List iterationVariableTypes
         9: .line 6633
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        10: goto 24
        11: .line 6634
      StackMap locals: int java.util.List int
      StackMap stack:
            aload 1 /* init */
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.invoke.MethodHandle
            astore 8 /* in */
        start local 8 // java.lang.invoke.MethodHandle in
        12: .line 6635
            aload 2 /* step */
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.invoke.MethodHandle
            astore 9 /* st */
        start local 9 // java.lang.invoke.MethodHandle st
        13: .line 6636
            aload 8 /* in */
            ifnonnull 16
            aload 9 /* st */
            ifnonnull 16
        14: .line 6637
            aload 6 /* iterationVariableTypes */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 6638
            goto 23
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack:
        16: aload 8 /* in */
            ifnull 20
            aload 9 /* st */
            ifnull 20
        17: .line 6639
            iload 7 /* i */
            aload 8 /* in */
            aload 9 /* st */
            invokestatic java.lang.invoke.MethodHandles.loopChecks1a:(ILjava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
        18: .line 6640
            aload 6 /* iterationVariableTypes */
            aload 8 /* in */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        19: .line 6641
            goto 23
        20: .line 6642
      StackMap locals:
      StackMap stack:
            aload 6 /* iterationVariableTypes */
            aload 8 /* in */
            ifnonnull 21
            aload 9 /* st */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            goto 22
      StackMap locals:
      StackMap stack: java.util.List
        21: aload 8 /* in */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
      StackMap locals: java.lang.invoke.MethodHandle[][] java.util.List java.util.List java.util.List java.util.List int java.util.List int java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack: java.util.List java.lang.Class
        22: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.invoke.MethodHandle st
        end local 8 // java.lang.invoke.MethodHandle in
        23: .line 6633
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 7 /* i */
            iload 5 /* nclauses */
            if_icmplt 11
        end local 7 // int i
        25: .line 6645
            aload 6 /* iterationVariableTypes */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$4(Ljava/lang/Class;)Z (6)
                  (Ljava/lang/Class;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
        26: .line 6646
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
        27: .line 6645
            astore 7 /* commonPrefix */
        start local 7 // java.util.List commonPrefix
        28: .line 6649
            aload 1 /* init */
            aload 2 /* step */
            aload 3 /* pred */
            aload 4 /* fini */
            aload 7 /* commonPrefix */
            invokeinterface java.util.List.size:()I
            invokestatic java.lang.invoke.MethodHandles.buildCommonSuffix:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;I)Ljava/util/List;
            astore 8 /* commonSuffix */
        start local 8 // java.util.List commonSuffix
        29: .line 6650
            aload 1 /* init */
            aload 8 /* commonSuffix */
            invokestatic java.lang.invoke.MethodHandles.loopChecks1b:(Ljava/util/List;Ljava/util/List;)V
        30: .line 6655
            aload 4 /* fini */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        31: .line 6656
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.returnType()Ljava/lang/Class; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        32: .line 6655
            astore 9 /* cstream */
        start local 9 // java.util.stream.Stream cstream
        33: .line 6657
            aload 9 /* cstream */
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 10 /* loopReturnType */
        start local 10 // java.lang.Class loopReturnType
        34: .line 6658
            aload 3 /* pred */
            aload 4 /* fini */
            aload 10 /* loopReturnType */
            invokestatic java.lang.invoke.MethodHandles.loopChecks1cd:(Ljava/util/List;Ljava/util/List;Ljava/lang/Class;)V
        35: .line 6661
            new java.util.ArrayList
            dup
            aload 7 /* commonPrefix */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 11 /* commonParameterSequence */
        start local 11 // java.util.List commonParameterSequence
        36: .line 6662
            aload 11 /* commonParameterSequence */
            aload 8 /* commonSuffix */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        37: .line 6663
            aload 2 /* step */
            aload 3 /* pred */
            aload 4 /* fini */
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodHandles.loopChecks2:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
        38: .line 6666
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        39: goto 50
        40: .line 6667
      StackMap locals: java.lang.invoke.MethodHandle[][] java.util.List java.util.List java.util.List java.util.List int java.util.List java.util.List java.util.List java.util.stream.Stream java.lang.Class java.util.List int
      StackMap stack:
            aload 6 /* iterationVariableTypes */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 13 /* t */
        start local 13 // java.lang.Class t
        41: .line 6668
            aload 1 /* init */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            ifnonnull 43
        42: .line 6669
            aload 1 /* init */
            iload 12 /* i */
            aload 13 /* t */
            aload 8 /* commonSuffix */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.empty:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        43: .line 6671
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 2 /* step */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            ifnonnull 45
        44: .line 6672
            aload 2 /* step */
            iload 12 /* i */
            aload 13 /* t */
            invokestatic java.lang.invoke.MethodHandles.identityOrVoid:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            aload 11 /* commonParameterSequence */
            iload 12 /* i */
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;I)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        45: .line 6674
      StackMap locals:
      StackMap stack:
            aload 3 /* pred */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            ifnonnull 47
        46: .line 6675
            aload 3 /* pred */
            iload 12 /* i */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic java.lang.invoke.MethodHandles.constant:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        47: .line 6677
      StackMap locals:
      StackMap stack:
            aload 4 /* fini */
            iload 12 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            ifnonnull 49
        48: .line 6678
            aload 4 /* fini */
            iload 12 /* i */
            aload 13 /* t */
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.empty:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 13 // java.lang.Class t
        49: .line 6666
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        50: iload 12 /* i */
            iload 5 /* nclauses */
            if_icmplt 40
        end local 12 // int i
        51: .line 6684
            aload 1 /* init */
            aload 8 /* commonSuffix */
            invokestatic java.lang.invoke.MethodHandles.fillParameterTypes:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.fixArities:(Ljava/util/List;)Ljava/util/List;
            astore 12 /* finit */
        start local 12 // java.util.List finit
        52: .line 6685
            aload 2 /* step */
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodHandles.fillParameterTypes:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.fixArities:(Ljava/util/List;)Ljava/util/List;
            astore 13 /* fstep */
        start local 13 // java.util.List fstep
        53: .line 6686
            aload 3 /* pred */
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodHandles.fillParameterTypes:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.fixArities:(Ljava/util/List;)Ljava/util/List;
            astore 14 /* fpred */
        start local 14 // java.util.List fpred
        54: .line 6687
            aload 4 /* fini */
            aload 11 /* commonParameterSequence */
            invokestatic java.lang.invoke.MethodHandles.fillParameterTypes:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.fixArities:(Ljava/util/List;)Ljava/util/List;
            astore 15 /* ffini */
        start local 15 // java.util.List ffini
        55: .line 6689
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 57
            aload 12 /* finit */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.parameterList()Ljava/util/List; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        56: .line 6690
            aload 8 /* commonSuffix */
            invokedynamic test(Ljava/util/List;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$10(Ljava/util/List;Ljava/util/List;)Z (6)
                  (Ljava/util/List;)Z
            invokeinterface java.util.stream.Stream.allMatch:(Ljava/util/function/Predicate;)Z
            ifne 57
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        57: .line 6691
      StackMap locals: java.lang.invoke.MethodHandle[][] java.util.List java.util.List java.util.List java.util.List int java.util.List java.util.List java.util.List java.util.stream.Stream java.lang.Class java.util.List java.util.List java.util.List java.util.List java.util.List
      StackMap stack:
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 59
            iconst_3
            anewarray java.util.List
            dup
            iconst_0
            aload 13 /* fstep */
            aastore
            dup
            iconst_1
            aload 14 /* fpred */
            aastore
            dup
            iconst_2
            aload 15 /* ffini */
            aastore
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Collection.stream()Ljava/util/stream/Stream; (9 itf)
                  (Ljava/util/List;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.parameterList()Ljava/util/List; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        58: .line 6692
            aload 11 /* commonParameterSequence */
            invokedynamic test(Ljava/util/List;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$14(Ljava/util/List;Ljava/util/List;)Z (6)
                  (Ljava/util/List;)Z
            invokeinterface java.util.stream.Stream.allMatch:(Ljava/util/function/Predicate;)Z
            ifne 59
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        59: .line 6694
      StackMap locals:
      StackMap stack:
            aload 10 /* loopReturnType */
            aload 8 /* commonSuffix */
            aload 12 /* finit */
            aload 13 /* fstep */
            aload 14 /* fpred */
            aload 15 /* ffini */
            invokestatic java.lang.invoke.MethodHandleImpl.makeLoop:(Ljava/lang/Class;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 15 // java.util.List ffini
        end local 14 // java.util.List fpred
        end local 13 // java.util.List fstep
        end local 12 // java.util.List finit
        end local 11 // java.util.List commonParameterSequence
        end local 10 // java.lang.Class loopReturnType
        end local 9 // java.util.stream.Stream cstream
        end local 8 // java.util.List commonSuffix
        end local 7 // java.util.List commonPrefix
        end local 6 // java.util.List iterationVariableTypes
        end local 5 // int nclauses
        end local 4 // java.util.List fini
        end local 3 // java.util.List pred
        end local 2 // java.util.List step
        end local 1 // java.util.List init
        end local 0 // java.lang.invoke.MethodHandle[][] clauses
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   60     0                  clauses  [[Ljava/lang/invoke/MethodHandle;
            2   60     1                     init  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            3   60     2                     step  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            4   60     3                     pred  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            5   60     4                     fini  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            8   60     5                 nclauses  I
            9   60     6   iterationVariableTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
           10   25     7                        i  I
           12   23     8                       in  Ljava/lang/invoke/MethodHandle;
           13   23     9                       st  Ljava/lang/invoke/MethodHandle;
           28   60     7             commonPrefix  Ljava/util/List<Ljava/lang/Class<*>;>;
           29   60     8             commonSuffix  Ljava/util/List<Ljava/lang/Class<*>;>;
           33   60     9                  cstream  Ljava/util/stream/Stream<Ljava/lang/Class<*>;>;
           34   60    10           loopReturnType  Ljava/lang/Class<*>;
           36   60    11  commonParameterSequence  Ljava/util/List<Ljava/lang/Class<*>;>;
           39   51    12                        i  I
           41   49    13                        t  Ljava/lang/Class<*>;
           52   60    12                    finit  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
           53   60    13                    fstep  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
           54   60    14                    fpred  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
           55   60    15                    ffini  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
    MethodParameters:
         Name  Flags
      clauses  

  private static void loopChecks0(java.lang.invoke.MethodHandle[][]);
    descriptor: ([[Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodHandle[][] clauses
         0: .line 6698
            aload 0 /* clauses */
            ifnull 1
            aload 0 /* clauses */
            arraylength
            ifne 2
         1: .line 6699
      StackMap locals:
      StackMap stack:
            ldc "null or no clauses passed"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         2: .line 6701
      StackMap locals:
      StackMap stack:
            aload 0 /* clauses */
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.isNull(Ljava/lang/Object;)Z (6)
                  ([Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 4
         3: .line 6702
            ldc "null clauses are not allowed"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 6704
      StackMap locals:
      StackMap stack:
            aload 0 /* clauses */
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$16([Ljava/lang/invoke/MethodHandle;)Z (6)
                  ([Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 6
         5: .line 6705
            ldc "All loop clauses must be represented as MethodHandle arrays with at most 4 elements."
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         6: .line 6707
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.invoke.MethodHandle[][] clauses
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  clauses  [[Ljava/lang/invoke/MethodHandle;
    MethodParameters:
         Name  Flags
      clauses  

  private static void loopChecks1a(int, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (ILjava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // int i
        start local 1 // java.lang.invoke.MethodHandle in
        start local 2 // java.lang.invoke.MethodHandle st
         0: .line 6710
            aload 1 /* in */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 2 /* st */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            if_acmpeq 4
         1: .line 6711
            new java.lang.StringBuilder
            dup
            ldc "clause "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": init and step return types"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* in */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
         2: .line 6712
            aload 2 /* st */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
         3: .line 6711
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 6714
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.invoke.MethodHandle st
        end local 1 // java.lang.invoke.MethodHandle in
        end local 0 // int i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     i  I
            0    5     1    in  Ljava/lang/invoke/MethodHandle;
            0    5     2    st  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      i     
      in    
      st    

  private static java.util.List<java.lang.Class<?>> longestParameterList(java.util.stream.Stream<java.lang.invoke.MethodHandle>, int);
    descriptor: (Ljava/util/stream/Stream;I)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.util.stream.Stream mhs
        start local 1 // int skipSize
         0: .line 6717
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 2 /* empty */
        start local 2 // java.util.List empty
         1: .line 6718
            aload 0 /* mhs */
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 6720
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 6721
            iload 1 /* skipSize */
            invokedynamic test(I)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$19(ILjava/lang/invoke/MethodType;)Z (6)
                  (Ljava/lang/invoke/MethodType;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         4: .line 6722
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.parameterList()Ljava/util/List; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 6723
            invokedynamic apply()Ljava/util/function/BinaryOperator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandles.lambda$21(Ljava/util/List;Ljava/util/List;)Ljava/util/List; (6)
                  (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.reduce:(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
            aload 2 /* empty */
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
         6: .line 6718
            astore 3 /* longest */
        start local 3 // java.util.List longest
         7: .line 6724
            aload 3 /* longest */
            invokeinterface java.util.List.size:()I
            ifne 8
            aload 2 /* empty */
            goto 9
      StackMap locals: java.util.List java.util.List
      StackMap stack:
         8: aload 3 /* longest */
            iload 1 /* skipSize */
            aload 3 /* longest */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
      StackMap locals:
      StackMap stack: java.util.List
         9: areturn
        end local 3 // java.util.List longest
        end local 2 // java.util.List empty
        end local 1 // int skipSize
        end local 0 // java.util.stream.Stream mhs
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0       mhs  Ljava/util/stream/Stream<Ljava/lang/invoke/MethodHandle;>;
            0   10     1  skipSize  I
            1   10     2     empty  Ljava/util/List<Ljava/lang/Class<*>;>;
            7   10     3   longest  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/stream/Stream<Ljava/lang/invoke/MethodHandle;>;I)Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
          Name  Flags
      mhs       
      skipSize  

  private static java.util.List<java.lang.Class<?>> longestParameterList(java.util.List<java.util.List<java.lang.Class<?>>>);
    descriptor: (Ljava/util/List;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.List lists
         0: .line 6728
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 1 /* empty */
        start local 1 // java.util.List empty
         1: .line 6729
            aload 0 /* lists */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/BinaryOperator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandles.lambda$22(Ljava/util/List;Ljava/util/List;)Ljava/util/List; (6)
                  (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.reduce:(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
            aload 1 /* empty */
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 1 // java.util.List empty
        end local 0 // java.util.List lists
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  lists  Ljava/util/List<Ljava/util/List<Ljava/lang/Class<*>;>;>;
            1    2     1  empty  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/util/List<Ljava/lang/Class<*>;>;>;)Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
       Name  Flags
      lists  

  private static java.util.List<java.lang.Class<?>> buildCommonSuffix(java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, int);
    descriptor: (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;I)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // java.util.List init
        start local 1 // java.util.List step
        start local 2 // java.util.List pred
        start local 3 // java.util.List fini
        start local 4 // int cpSize
         0: .line 6733
            iconst_3
            anewarray java.util.List
            dup
            iconst_0
            aload 1 /* step */
            aastore
            dup
            iconst_1
            aload 2 /* pred */
            aastore
            dup
            iconst_2
            aload 3 /* fini */
            aastore
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Collection.stream()Ljava/util/stream/Stream; (9 itf)
                  (Ljava/util/List;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            iload 4 /* cpSize */
            invokestatic java.lang.invoke.MethodHandles.longestParameterList:(Ljava/util/stream/Stream;I)Ljava/util/List;
            astore 5 /* longest1 */
        start local 5 // java.util.List longest1
         1: .line 6734
            aload 0 /* init */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            iconst_0
            invokestatic java.lang.invoke.MethodHandles.longestParameterList:(Ljava/util/stream/Stream;I)Ljava/util/List;
            astore 6 /* longest2 */
        start local 6 // java.util.List longest2
         2: .line 6735
            iconst_2
            anewarray java.util.List
            dup
            iconst_0
            aload 5 /* longest1 */
            aastore
            dup
            iconst_1
            aload 6 /* longest2 */
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.longestParameterList:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 6 // java.util.List longest2
        end local 5 // java.util.List longest1
        end local 4 // int cpSize
        end local 3 // java.util.List fini
        end local 2 // java.util.List pred
        end local 1 // java.util.List step
        end local 0 // java.util.List init
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      init  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    3     1      step  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    3     2      pred  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    3     3      fini  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    3     4    cpSize  I
            1    3     5  longest1  Ljava/util/List<Ljava/lang/Class<*>;>;
            2    3     6  longest2  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;I)Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
        Name  Flags
      init    
      step    
      pred    
      fini    
      cpSize  

  private static void loopChecks1b(java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/util/List;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.List init
        start local 1 // java.util.List commonSuffix
         0: .line 6739
            aload 0 /* init */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         1: .line 6740
            aload 1 /* commonSuffix */
            invokedynamic test(Ljava/util/List;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$26(Ljava/util/List;Ljava/lang/invoke/MethodType;)Z (6)
                  (Ljava/lang/invoke/MethodType;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 5
         2: .line 6741
            new java.lang.StringBuilder
            dup
            ldc "found non-effectively identical init parameter type lists: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* init */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 6742
            ldc " (common suffix: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* commonSuffix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 6741
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 6744
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List commonSuffix
        end local 0 // java.util.List init
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          init  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    6     1  commonSuffix  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/Class<*>;>;)V
    MethodParameters:
              Name  Flags
      init          
      commonSuffix  

  private static void loopChecks1cd(java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, java.lang.Class<?>);
    descriptor: (Ljava/util/List;Ljava/util/List;Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.util.List pred
        start local 1 // java.util.List fini
        start local 2 // java.lang.Class loopReturnType
         0: .line 6747
            aload 1 /* fini */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.returnType()Ljava/lang/Class; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         1: .line 6748
            aload 2 /* loopReturnType */
            invokedynamic test(Ljava/lang/Class;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$30(Ljava/lang/Class;Ljava/lang/Class;)Z (6)
                  (Ljava/lang/Class;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 5
         2: .line 6749
            new java.lang.StringBuilder
            dup
            ldc "found non-identical finalizer return types: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* fini */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " (return type: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 6750
            aload 2 /* loopReturnType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 6749
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 6753
      StackMap locals:
      StackMap stack:
            aload 0 /* pred */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifne 7
         6: .line 6754
            ldc "no predicate found"
            aload 0 /* pred */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         7: .line 6756
      StackMap locals:
      StackMap stack:
            aload 0 /* pred */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodType.returnType()Ljava/lang/Class; (5)
                  (Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         8: .line 6757
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$35(Ljava/lang/Class;)Z (6)
                  (Ljava/lang/Class;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 10
         9: .line 6758
            ldc "predicates must have boolean return type"
            aload 0 /* pred */
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        10: .line 6760
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Class loopReturnType
        end local 1 // java.util.List fini
        end local 0 // java.util.List pred
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            pred  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0   11     1            fini  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0   11     2  loopReturnType  Ljava/lang/Class<*>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/lang/Class<*>;)V
    MethodParameters:
                Name  Flags
      pred            
      fini            
      loopReturnType  

  private static void loopChecks2(java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.util.List step
        start local 1 // java.util.List pred
        start local 2 // java.util.List fini
        start local 3 // java.util.List commonParameterSequence
         0: .line 6763
            iconst_3
            anewarray java.util.List
            dup
            iconst_0
            aload 0 /* step */
            aastore
            dup
            iconst_1
            aload 1 /* pred */
            aastore
            dup
            iconst_2
            aload 2 /* fini */
            aastore
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Collection.stream()Ljava/util/stream/Stream; (9 itf)
                  (Ljava/util/List;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.type()Ljava/lang/invoke/MethodType; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         1: .line 6764
            aload 3 /* commonParameterSequence */
            invokedynamic test(Ljava/util/List;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/invoke/MethodHandles.lambda$39(Ljava/util/List;Ljava/lang/invoke/MethodType;)Z (6)
                  (Ljava/lang/invoke/MethodType;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ifeq 5
         2: .line 6765
            new java.lang.StringBuilder
            dup
            ldc "found non-effectively identical parameter type lists:\nstep: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* step */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 6766
            ldc "\npred: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* pred */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\nfini: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* fini */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " (common parameter sequence: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* commonParameterSequence */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 6765
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 6768
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.List commonParameterSequence
        end local 2 // java.util.List fini
        end local 1 // java.util.List pred
        end local 0 // java.util.List step
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    6     0                     step  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    6     1                     pred  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    6     2                     fini  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    6     3  commonParameterSequence  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/Class<*>;>;)V
    MethodParameters:
                         Name  Flags
      step                     
      pred                     
      fini                     
      commonParameterSequence  

  private static java.util.List<java.lang.invoke.MethodHandle> fillParameterTypes(java.util.List<java.lang.invoke.MethodHandle>, java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.List hs
        start local 1 // java.util.List targetParams
         0: .line 6771
            aload 0 /* hs */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            aload 1 /* targetParams */
            invokedynamic apply(Ljava/util/List;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandles.lambda$40(Ljava/util/List;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle; (6)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         1: .line 6775
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
         2: .line 6771
            areturn
        end local 1 // java.util.List targetParams
        end local 0 // java.util.List hs
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0            hs  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
            0    3     1  targetParams  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;Ljava/util/List<Ljava/lang/Class<*>;>;)Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
    MethodParameters:
              Name  Flags
      hs            
      targetParams  final

  private static java.util.List<java.lang.invoke.MethodHandle> fixArities(java.util.List<java.lang.invoke.MethodHandle>);
    descriptor: (Ljava/util/List;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.List hs
         0: .line 6779
            aload 0 /* hs */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/lang/invoke/MethodHandle.asFixedArity()Ljava/lang/invoke/MethodHandle; (5)
                  (Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 0 // java.util.List hs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    hs  Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
    Signature: (Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;)Ljava/util/List<Ljava/lang/invoke/MethodHandle;>;
    MethodParameters:
      Name  Flags
      hs    

  public static java.lang.invoke.MethodHandle whileLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // java.lang.invoke.MethodHandle init
        start local 1 // java.lang.invoke.MethodHandle pred
        start local 2 // java.lang.invoke.MethodHandle body
         0: .line 6889
            aload 0 /* init */
            aload 1 /* pred */
            aload 2 /* body */
            invokestatic java.lang.invoke.MethodHandles.whileLoopChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         1: .line 6890
            aload 2 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandles.identityOrVoid:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* fini */
        start local 3 // java.lang.invoke.MethodHandle fini
         2: .line 6891
            iconst_4
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_2
            aload 1 /* pred */
            aastore
            dup
            iconst_3
            aload 3 /* fini */
            aastore
            astore 4 /* checkExit */
        start local 4 // java.lang.invoke.MethodHandle[] checkExit
         3: .line 6892
            iconst_2
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 0 /* init */
            aastore
            dup
            iconst_1
            aload 2 /* body */
            aastore
            astore 5 /* varBody */
        start local 5 // java.lang.invoke.MethodHandle[] varBody
         4: .line 6893
            iconst_2
            anewarray java.lang.invoke.MethodHandle[]
            dup
            iconst_0
            aload 4 /* checkExit */
            aastore
            dup
            iconst_1
            aload 5 /* varBody */
            aastore
            invokestatic java.lang.invoke.MethodHandles.loop:([[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 5 // java.lang.invoke.MethodHandle[] varBody
        end local 4 // java.lang.invoke.MethodHandle[] checkExit
        end local 3 // java.lang.invoke.MethodHandle fini
        end local 2 // java.lang.invoke.MethodHandle body
        end local 1 // java.lang.invoke.MethodHandle pred
        end local 0 // java.lang.invoke.MethodHandle init
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       init  Ljava/lang/invoke/MethodHandle;
            0    5     1       pred  Ljava/lang/invoke/MethodHandle;
            0    5     2       body  Ljava/lang/invoke/MethodHandle;
            2    5     3       fini  Ljava/lang/invoke/MethodHandle;
            3    5     4  checkExit  [Ljava/lang/invoke/MethodHandle;
            4    5     5    varBody  [Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      init  
      pred  
      body  

  public static java.lang.invoke.MethodHandle doWhileLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.lang.invoke.MethodHandle init
        start local 1 // java.lang.invoke.MethodHandle body
        start local 2 // java.lang.invoke.MethodHandle pred
         0: .line 6993
            aload 0 /* init */
            aload 2 /* pred */
            aload 1 /* body */
            invokestatic java.lang.invoke.MethodHandles.whileLoopChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         1: .line 6994
            aload 1 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokestatic java.lang.invoke.MethodHandles.identityOrVoid:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* fini */
        start local 3 // java.lang.invoke.MethodHandle fini
         2: .line 6995
            iconst_4
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 0 /* init */
            aastore
            dup
            iconst_1
            aload 1 /* body */
            aastore
            dup
            iconst_2
            aload 2 /* pred */
            aastore
            dup
            iconst_3
            aload 3 /* fini */
            aastore
            astore 4 /* clause */
        start local 4 // java.lang.invoke.MethodHandle[] clause
         3: .line 6996
            iconst_1
            anewarray java.lang.invoke.MethodHandle[]
            dup
            iconst_0
            aload 4 /* clause */
            aastore
            invokestatic java.lang.invoke.MethodHandles.loop:([[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 4 // java.lang.invoke.MethodHandle[] clause
        end local 3 // java.lang.invoke.MethodHandle fini
        end local 2 // java.lang.invoke.MethodHandle pred
        end local 1 // java.lang.invoke.MethodHandle body
        end local 0 // java.lang.invoke.MethodHandle init
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    init  Ljava/lang/invoke/MethodHandle;
            0    4     1    body  Ljava/lang/invoke/MethodHandle;
            0    4     2    pred  Ljava/lang/invoke/MethodHandle;
            2    4     3    fini  Ljava/lang/invoke/MethodHandle;
            3    4     4  clause  [Ljava/lang/invoke/MethodHandle;
    MethodParameters:
      Name  Flags
      init  
      body  
      pred  

  private static void whileLoopChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // java.lang.invoke.MethodHandle init
        start local 1 // java.lang.invoke.MethodHandle pred
        start local 2 // java.lang.invoke.MethodHandle body
         0: .line 7000
            aload 1 /* pred */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 7001
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 7002
            aload 2 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* bodyType */
        start local 3 // java.lang.invoke.MethodType bodyType
         3: .line 7003
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         4: .line 7004
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* innerList */
        start local 5 // java.util.List innerList
         5: .line 7005
            aload 5 /* innerList */
            astore 6 /* outerList */
        start local 6 // java.util.List outerList
         6: .line 7006
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         7: .line 7008
            aload 5 /* innerList */
            invokeinterface java.util.List.size:()I
            ifeq 8
            aload 5 /* innerList */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aload 4 /* returnType */
            if_acmpeq 10
         8: .line 7010
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodType java.lang.Class java.util.List java.util.List
      StackMap stack:
            aload 3 /* bodyType */
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 4 /* returnType */
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 7 /* expected */
        start local 7 // java.lang.invoke.MethodType expected
         9: .line 7011
            ldc "body function"
            aload 3 /* bodyType */
            aload 7 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // java.lang.invoke.MethodType expected
        10: .line 7013
      StackMap locals:
      StackMap stack:
            aload 5 /* innerList */
            iconst_1
            aload 5 /* innerList */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 6 /* outerList */
        11: .line 7015
      StackMap locals:
      StackMap stack:
            aload 1 /* pred */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 7 /* predType */
        start local 7 // java.lang.invoke.MethodType predType
        12: .line 7016
            aload 7 /* predType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 14
        13: .line 7017
            aload 7 /* predType */
            iconst_0
            aload 5 /* innerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 15
        14: .line 7018
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            ldc "loop predicate"
            aload 7 /* predType */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            aload 5 /* innerList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        15: .line 7020
      StackMap locals:
      StackMap stack:
            aload 0 /* init */
            ifnull 20
        16: .line 7021
            aload 0 /* init */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 8 /* initType */
        start local 8 // java.lang.invoke.MethodType initType
        17: .line 7022
            aload 8 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 19
        18: .line 7023
            aload 8 /* initType */
            iconst_0
            aload 6 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 20
        19: .line 7024
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            ldc "loop initializer"
            aload 8 /* initType */
            aload 4 /* returnType */
            aload 6 /* outerList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 8 // java.lang.invoke.MethodType initType
        20: .line 7027
      StackMap locals:
      StackMap stack:
            return
        end local 7 // java.lang.invoke.MethodType predType
        end local 6 // java.util.List outerList
        end local 5 // java.util.List innerList
        end local 4 // java.lang.Class returnType
        end local 3 // java.lang.invoke.MethodType bodyType
        end local 2 // java.lang.invoke.MethodHandle body
        end local 1 // java.lang.invoke.MethodHandle pred
        end local 0 // java.lang.invoke.MethodHandle init
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0        init  Ljava/lang/invoke/MethodHandle;
            0   21     1        pred  Ljava/lang/invoke/MethodHandle;
            0   21     2        body  Ljava/lang/invoke/MethodHandle;
            3   21     3    bodyType  Ljava/lang/invoke/MethodType;
            4   21     4  returnType  Ljava/lang/Class<*>;
            5   21     5   innerList  Ljava/util/List<Ljava/lang/Class<*>;>;
            6   21     6   outerList  Ljava/util/List<Ljava/lang/Class<*>;>;
            9   10     7    expected  Ljava/lang/invoke/MethodType;
           12   21     7    predType  Ljava/lang/invoke/MethodType;
           17   20     8    initType  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      init  
      pred  
      body  

  public static java.lang.invoke.MethodHandle countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.invoke.MethodHandle iterations
        start local 1 // java.lang.invoke.MethodHandle init
        start local 2 // java.lang.invoke.MethodHandle body
         0: .line 7177
            aload 0 /* iterations */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.empty:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            aload 0 /* iterations */
            aload 1 /* init */
            aload 2 /* body */
            invokestatic java.lang.invoke.MethodHandles.countedLoop:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 2 // java.lang.invoke.MethodHandle body
        end local 1 // java.lang.invoke.MethodHandle init
        end local 0 // java.lang.invoke.MethodHandle iterations
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  iterations  Ljava/lang/invoke/MethodHandle;
            0    1     1        init  Ljava/lang/invoke/MethodHandle;
            0    1     2        body  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
            Name  Flags
      iterations  
      init        
      body        

  public static java.lang.invoke.MethodHandle countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // java.lang.invoke.MethodHandle start
        start local 1 // java.lang.invoke.MethodHandle end
        start local 2 // java.lang.invoke.MethodHandle init
        start local 3 // java.lang.invoke.MethodHandle body
         0: .line 7301
            aload 0 /* start */
            aload 1 /* end */
            aload 2 /* init */
            aload 3 /* body */
            invokestatic java.lang.invoke.MethodHandles.countedLoopChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         1: .line 7302
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* counterType */
        start local 4 // java.lang.Class counterType
         2: .line 7303
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            pop
         3: .line 7304
            aload 3 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 5 /* returnType */
        start local 5 // java.lang.Class returnType
         4: .line 7305
            bipush 7
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
            astore 6 /* incr */
        start local 6 // java.lang.invoke.MethodHandle incr
         5: .line 7306
            bipush 6
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
            astore 7 /* pred */
        start local 7 // java.lang.invoke.MethodHandle pred
         6: .line 7307
            aconst_null
            astore 8 /* retv */
        start local 8 // java.lang.invoke.MethodHandle retv
         7: .line 7308
            aload 5 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         8: .line 7309
            aload 6 /* incr */
            iconst_1
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 5 /* returnType */
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 6 /* incr */
         9: .line 7310
            aload 7 /* pred */
            iconst_1
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 5 /* returnType */
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 7 /* pred */
        10: .line 7311
            aload 5 /* returnType */
            invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 4 /* counterType */
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 8 /* retv */
        11: .line 7313
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack:
            aload 3 /* body */
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 4 /* counterType */
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* body */
        12: .line 7315
            iconst_4
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 1 /* end */
            aastore
            dup
            iconst_2
            aload 7 /* pred */
            aastore
            dup
            iconst_3
            aload 8 /* retv */
            aastore
            astore 9 /* loopLimit */
        start local 9 // java.lang.invoke.MethodHandle[] loopLimit
        13: .line 7316
            iconst_2
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 2 /* init */
            aastore
            dup
            iconst_1
            aload 3 /* body */
            aastore
            astore 10 /* bodyClause */
        start local 10 // java.lang.invoke.MethodHandle[] bodyClause
        14: .line 7317
            iconst_2
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 0 /* start */
            aastore
            dup
            iconst_1
            aload 6 /* incr */
            aastore
            astore 11 /* indexVar */
        start local 11 // java.lang.invoke.MethodHandle[] indexVar
        15: .line 7318
            iconst_3
            anewarray java.lang.invoke.MethodHandle[]
            dup
            iconst_0
            aload 9 /* loopLimit */
            aastore
            dup
            iconst_1
            aload 10 /* bodyClause */
            aastore
            dup
            iconst_2
            aload 11 /* indexVar */
            aastore
            invokestatic java.lang.invoke.MethodHandles.loop:([[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 11 // java.lang.invoke.MethodHandle[] indexVar
        end local 10 // java.lang.invoke.MethodHandle[] bodyClause
        end local 9 // java.lang.invoke.MethodHandle[] loopLimit
        end local 8 // java.lang.invoke.MethodHandle retv
        end local 7 // java.lang.invoke.MethodHandle pred
        end local 6 // java.lang.invoke.MethodHandle incr
        end local 5 // java.lang.Class returnType
        end local 4 // java.lang.Class counterType
        end local 3 // java.lang.invoke.MethodHandle body
        end local 2 // java.lang.invoke.MethodHandle init
        end local 1 // java.lang.invoke.MethodHandle end
        end local 0 // java.lang.invoke.MethodHandle start
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0        start  Ljava/lang/invoke/MethodHandle;
            0   16     1          end  Ljava/lang/invoke/MethodHandle;
            0   16     2         init  Ljava/lang/invoke/MethodHandle;
            0   16     3         body  Ljava/lang/invoke/MethodHandle;
            2   16     4  counterType  Ljava/lang/Class<*>;
            4   16     5   returnType  Ljava/lang/Class<*>;
            5   16     6         incr  Ljava/lang/invoke/MethodHandle;
            6   16     7         pred  Ljava/lang/invoke/MethodHandle;
            7   16     8         retv  Ljava/lang/invoke/MethodHandle;
           13   16     9    loopLimit  [Ljava/lang/invoke/MethodHandle;
           14   16    10   bodyClause  [Ljava/lang/invoke/MethodHandle;
           15   16    11     indexVar  [Ljava/lang/invoke/MethodHandle;
    MethodParameters:
       Name  Flags
      start  
      end    
      init   
      body   

  private static void countedLoopChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // java.lang.invoke.MethodHandle start
        start local 1 // java.lang.invoke.MethodHandle end
        start local 2 // java.lang.invoke.MethodHandle init
        start local 3 // java.lang.invoke.MethodHandle body
         0: .line 7322
            aload 0 /* start */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 7323
            aload 1 /* end */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 7324
            aload 3 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 7325
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* counterType */
        start local 4 // java.lang.Class counterType
         4: .line 7326
            aload 4 /* counterType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 7
         5: .line 7327
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 5 /* expected */
        start local 5 // java.lang.invoke.MethodType expected
         6: .line 7328
            ldc "start function"
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 5 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // java.lang.invoke.MethodType expected
         7: .line 7329
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* counterType */
            if_acmpeq 10
         8: .line 7330
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 4 /* counterType */
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 5 /* expected */
        start local 5 // java.lang.invoke.MethodType expected
         9: .line 7331
            ldc "end function"
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 5 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // java.lang.invoke.MethodType expected
        10: .line 7333
      StackMap locals:
      StackMap stack:
            aload 3 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 5 /* bodyType */
        start local 5 // java.lang.invoke.MethodType bodyType
        11: .line 7334
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 6 /* returnType */
        start local 6 // java.lang.Class returnType
        12: .line 7335
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 7 /* innerList */
        start local 7 // java.util.List innerList
        13: .line 7337
            aload 6 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 14
            iconst_0
            goto 15
      StackMap locals: java.lang.invoke.MethodType java.lang.Class java.util.List
      StackMap stack:
        14: iconst_1
      StackMap locals:
      StackMap stack: int
        15: istore 8 /* vsize */
        start local 8 // int vsize
        16: .line 7338
            iload 8 /* vsize */
            ifeq 19
            aload 7 /* innerList */
            invokeinterface java.util.List.size:()I
            ifeq 17
            aload 7 /* innerList */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aload 6 /* returnType */
            if_acmpeq 19
        17: .line 7340
      StackMap locals: int
      StackMap stack:
            aload 5 /* bodyType */
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 6 /* returnType */
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 9 /* expected */
        start local 9 // java.lang.invoke.MethodType expected
        18: .line 7341
            ldc "body function"
            aload 5 /* bodyType */
            aload 9 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // java.lang.invoke.MethodType expected
        19: .line 7342
      StackMap locals:
      StackMap stack:
            aload 7 /* innerList */
            invokeinterface java.util.List.size:()I
            iload 8 /* vsize */
            if_icmple 20
            aload 7 /* innerList */
            iload 8 /* vsize */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aload 4 /* counterType */
            if_acmpeq 22
        20: .line 7344
      StackMap locals:
      StackMap stack:
            aload 5 /* bodyType */
            iload 8 /* vsize */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 4 /* counterType */
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 9 /* expected */
        start local 9 // java.lang.invoke.MethodType expected
        21: .line 7345
            ldc "body function"
            aload 5 /* bodyType */
            aload 9 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // java.lang.invoke.MethodType expected
        22: .line 7347
      StackMap locals:
      StackMap stack:
            aload 7 /* innerList */
            iload 8 /* vsize */
            iconst_1
            iadd
            aload 7 /* innerList */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 9 /* outerList */
        start local 9 // java.util.List outerList
        23: .line 7348
            aload 9 /* outerList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 26
        24: .line 7350
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 9 /* outerList */
        25: .line 7351
            aload 5 /* bodyType */
            iload 8 /* vsize */
            iconst_1
            iadd
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(ILjava/util/List;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 7 /* innerList */
        26: .line 7353
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* counterType */
            aload 9 /* outerList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            astore 10 /* expected */
        start local 10 // java.lang.invoke.MethodType expected
        27: .line 7354
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 29
        28: .line 7355
            ldc "start parameter types"
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 10 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        29: .line 7357
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* start */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            if_acmpeq 32
        30: .line 7358
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 32
        31: .line 7359
            ldc "end parameter types"
            aload 1 /* end */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 10 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        32: .line 7361
      StackMap locals:
      StackMap stack:
            aload 2 /* init */
            ifnull 37
        33: .line 7362
            aload 2 /* init */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 11 /* initType */
        start local 11 // java.lang.invoke.MethodType initType
        34: .line 7363
            aload 11 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 6 /* returnType */
            if_acmpne 36
        35: .line 7364
            aload 11 /* initType */
            iconst_0
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 7365
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            ldc "loop initializer"
            aload 11 /* initType */
            aload 6 /* returnType */
            aload 9 /* outerList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 11 // java.lang.invoke.MethodType initType
        37: .line 7368
      StackMap locals:
      StackMap stack:
            return
        end local 10 // java.lang.invoke.MethodType expected
        end local 9 // java.util.List outerList
        end local 8 // int vsize
        end local 7 // java.util.List innerList
        end local 6 // java.lang.Class returnType
        end local 5 // java.lang.invoke.MethodType bodyType
        end local 4 // java.lang.Class counterType
        end local 3 // java.lang.invoke.MethodHandle body
        end local 2 // java.lang.invoke.MethodHandle init
        end local 1 // java.lang.invoke.MethodHandle end
        end local 0 // java.lang.invoke.MethodHandle start
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   38     0        start  Ljava/lang/invoke/MethodHandle;
            0   38     1          end  Ljava/lang/invoke/MethodHandle;
            0   38     2         init  Ljava/lang/invoke/MethodHandle;
            0   38     3         body  Ljava/lang/invoke/MethodHandle;
            4   38     4  counterType  Ljava/lang/Class<*>;
            6    7     5     expected  Ljava/lang/invoke/MethodType;
            9   10     5     expected  Ljava/lang/invoke/MethodType;
           11   38     5     bodyType  Ljava/lang/invoke/MethodType;
           12   38     6   returnType  Ljava/lang/Class<*>;
           13   38     7    innerList  Ljava/util/List<Ljava/lang/Class<*>;>;
           16   38     8        vsize  I
           18   19     9     expected  Ljava/lang/invoke/MethodType;
           21   22     9     expected  Ljava/lang/invoke/MethodType;
           23   38     9    outerList  Ljava/util/List<Ljava/lang/Class<*>;>;
           27   38    10     expected  Ljava/lang/invoke/MethodType;
           34   37    11     initType  Ljava/lang/invoke/MethodType;
    MethodParameters:
       Name  Flags
      start  
      end    
      init   
      body   

  public static java.lang.invoke.MethodHandle iteratedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=13, args_size=3
        start local 0 // java.lang.invoke.MethodHandle iterator
        start local 1 // java.lang.invoke.MethodHandle init
        start local 2 // java.lang.invoke.MethodHandle body
         0: .line 7512
            aload 0 /* iterator */
            aload 1 /* init */
            aload 2 /* body */
            invokestatic java.lang.invoke.MethodHandles.iteratedLoopChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/Class;
            astore 3 /* iterableType */
        start local 3 // java.lang.Class iterableType
         1: .line 7513
            aload 2 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         2: .line 7514
            bipush 9
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
            astore 5 /* hasNext */
        start local 5 // java.lang.invoke.MethodHandle hasNext
         3: .line 7515
            bipush 10
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
            astore 6 /* nextRaw */
        start local 6 // java.lang.invoke.MethodHandle nextRaw
         4: .line 7520
            aload 0 /* iterator */
            ifnonnull 8
         5: .line 7522
            bipush 8
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
            astore 7 /* startIter */
        start local 7 // java.lang.invoke.MethodHandle startIter
         6: .line 7523
            aload 7 /* startIter */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            aload 3 /* iterableType */
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 9 /* iteratorType */
        start local 9 // java.lang.invoke.MethodType iteratorType
         7: .line 7524
            goto 10
        end local 9 // java.lang.invoke.MethodType iteratorType
        end local 7 // java.lang.invoke.MethodHandle startIter
         8: .line 7526
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack:
            aload 0 /* iterator */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            ldc Ljava/util/Iterator;
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 9 /* iteratorType */
        start local 9 // java.lang.invoke.MethodType iteratorType
         9: .line 7527
            aload 0 /* iterator */
            astore 7 /* startIter */
        start local 7 // java.lang.invoke.MethodHandle startIter
        10: .line 7529
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle top java.lang.invoke.MethodType
      StackMap stack:
            aload 2 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 11
            iconst_0
            goto 12
      StackMap locals:
      StackMap stack: java.lang.invoke.MethodType
        11: iconst_1
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle top java.lang.invoke.MethodType
      StackMap stack: java.lang.invoke.MethodType int
        12: invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 10 /* ttype */
        start local 10 // java.lang.Class ttype
        13: .line 7530
            aload 6 /* nextRaw */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 10 /* ttype */
            invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 11 /* nextValType */
        start local 11 // java.lang.invoke.MethodType nextValType
        14: .line 7534
            aload 7 /* startIter */
            aload 9 /* iteratorType */
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            astore 7 /* startIter */
        15: .line 7535
            aload 6 /* nextRaw */
            aload 11 /* nextValType */
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            astore 8 /* nextVal */
        start local 8 // java.lang.invoke.MethodHandle nextVal
        16: .line 7536
            goto 19
        end local 8 // java.lang.invoke.MethodHandle nextVal
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle top java.lang.invoke.MethodType java.lang.Class java.lang.invoke.MethodType
      StackMap stack: java.lang.invoke.WrongMethodTypeException
        17: astore 12 /* ex */
        start local 12 // java.lang.invoke.WrongMethodTypeException ex
        18: .line 7537
            new java.lang.IllegalArgumentException
            dup
            aload 12 /* ex */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 12 // java.lang.invoke.WrongMethodTypeException ex
        end local 11 // java.lang.invoke.MethodType nextValType
        end local 10 // java.lang.Class ttype
        end local 9 // java.lang.invoke.MethodType iteratorType
        start local 8 // java.lang.invoke.MethodHandle nextVal
        19: .line 7541
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.Class java.lang.Class java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack:
            aconst_null
            astore 9 /* retv */
        start local 9 // java.lang.invoke.MethodHandle retv
        20: aload 2 /* body */
            astore 10 /* step */
        start local 10 // java.lang.invoke.MethodHandle step
        21: .line 7542
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 24
        22: .line 7544
            aload 4 /* returnType */
            invokestatic java.lang.invoke.MethodHandles.identity:(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/util/Iterator;
            aastore
            invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            astore 9 /* retv */
        23: .line 7546
            aload 2 /* body */
            iconst_0
            iconst_1
            invokestatic java.lang.invoke.MethodHandles.swapArguments:(Ljava/lang/invoke/MethodHandle;II)Ljava/lang/invoke/MethodHandle;
            astore 10 /* step */
        24: .line 7550
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle
      StackMap stack:
            iconst_4
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 7 /* startIter */
            aastore
            dup
            iconst_2
            aload 5 /* hasNext */
            aastore
            dup
            iconst_3
            aload 9 /* retv */
            aastore
            astore 11 /* iterVar */
        start local 11 // java.lang.invoke.MethodHandle[] iterVar
        25: .line 7551
            iconst_2
            anewarray java.lang.invoke.MethodHandle
            dup
            iconst_0
            aload 1 /* init */
            aastore
            dup
            iconst_1
            aload 10 /* step */
            iconst_0
            aload 8 /* nextVal */
            invokestatic java.lang.invoke.MethodHandles.filterArgument:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            aastore
            astore 12 /* bodyClause */
        start local 12 // java.lang.invoke.MethodHandle[] bodyClause
        26: .line 7552
            iconst_2
            anewarray java.lang.invoke.MethodHandle[]
            dup
            iconst_0
            aload 11 /* iterVar */
            aastore
            dup
            iconst_1
            aload 12 /* bodyClause */
            aastore
            invokestatic java.lang.invoke.MethodHandles.loop:([[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 12 // java.lang.invoke.MethodHandle[] bodyClause
        end local 11 // java.lang.invoke.MethodHandle[] iterVar
        end local 10 // java.lang.invoke.MethodHandle step
        end local 9 // java.lang.invoke.MethodHandle retv
        end local 8 // java.lang.invoke.MethodHandle nextVal
        end local 7 // java.lang.invoke.MethodHandle startIter
        end local 6 // java.lang.invoke.MethodHandle nextRaw
        end local 5 // java.lang.invoke.MethodHandle hasNext
        end local 4 // java.lang.Class returnType
        end local 3 // java.lang.Class iterableType
        end local 2 // java.lang.invoke.MethodHandle body
        end local 1 // java.lang.invoke.MethodHandle init
        end local 0 // java.lang.invoke.MethodHandle iterator
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0      iterator  Ljava/lang/invoke/MethodHandle;
            0   27     1          init  Ljava/lang/invoke/MethodHandle;
            0   27     2          body  Ljava/lang/invoke/MethodHandle;
            1   27     3  iterableType  Ljava/lang/Class<*>;
            2   27     4    returnType  Ljava/lang/Class<*>;
            3   27     5       hasNext  Ljava/lang/invoke/MethodHandle;
            4   27     6       nextRaw  Ljava/lang/invoke/MethodHandle;
            6    8     7     startIter  Ljava/lang/invoke/MethodHandle;
           10   27     7     startIter  Ljava/lang/invoke/MethodHandle;
           16   17     8       nextVal  Ljava/lang/invoke/MethodHandle;
           19   27     8       nextVal  Ljava/lang/invoke/MethodHandle;
            7    8     9  iteratorType  Ljava/lang/invoke/MethodType;
            9   19     9  iteratorType  Ljava/lang/invoke/MethodType;
           13   19    10         ttype  Ljava/lang/Class<*>;
           14   19    11   nextValType  Ljava/lang/invoke/MethodType;
           18   19    12            ex  Ljava/lang/invoke/WrongMethodTypeException;
           20   27     9          retv  Ljava/lang/invoke/MethodHandle;
           21   27    10          step  Ljava/lang/invoke/MethodHandle;
           25   27    11       iterVar  [Ljava/lang/invoke/MethodHandle;
           26   27    12    bodyClause  [Ljava/lang/invoke/MethodHandle;
      Exception table:
        from    to  target  type
          14    16      17  Class java.lang.invoke.WrongMethodTypeException
    MethodParameters:
          Name  Flags
      iterator  
      init      
      body      

  private static java.lang.Class<?> iteratedLoopChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=3
        start local 0 // java.lang.invoke.MethodHandle iterator
        start local 1 // java.lang.invoke.MethodHandle init
        start local 2 // java.lang.invoke.MethodHandle body
         0: .line 7556
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 7557
            aload 2 /* body */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* bodyType */
        start local 3 // java.lang.invoke.MethodType bodyType
         2: .line 7558
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         3: .line 7559
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* internalParamList */
        start local 5 // java.util.List internalParamList
         4: .line 7561
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 5
            iconst_0
            goto 6
      StackMap locals: java.lang.invoke.MethodType java.lang.Class java.util.List
      StackMap stack:
         5: iconst_1
      StackMap locals:
      StackMap stack: int
         6: istore 6 /* vsize */
        start local 6 // int vsize
         7: .line 7562
            iload 6 /* vsize */
            ifeq 10
            aload 5 /* internalParamList */
            invokeinterface java.util.List.size:()I
            ifeq 8
            aload 5 /* internalParamList */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            aload 4 /* returnType */
            if_acmpeq 10
         8: .line 7564
      StackMap locals: int
      StackMap stack:
            aload 3 /* bodyType */
            iconst_0
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 4 /* returnType */
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 7 /* expected */
        start local 7 // java.lang.invoke.MethodType expected
         9: .line 7565
            ldc "body function"
            aload 3 /* bodyType */
            aload 7 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // java.lang.invoke.MethodType expected
        10: .line 7566
      StackMap locals:
      StackMap stack:
            aload 5 /* internalParamList */
            invokeinterface java.util.List.size:()I
            iload 6 /* vsize */
            if_icmpgt 13
        11: .line 7568
            aload 3 /* bodyType */
            iload 6 /* vsize */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokevirtual java.lang.invoke.MethodType.insertParameterTypes:(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 7 /* expected */
        start local 7 // java.lang.invoke.MethodType expected
        12: .line 7569
            ldc "body function"
            aload 3 /* bodyType */
            aload 7 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // java.lang.invoke.MethodType expected
        13: .line 7571
      StackMap locals:
      StackMap stack:
            aload 5 /* internalParamList */
            iload 6 /* vsize */
            iconst_1
            iadd
            aload 5 /* internalParamList */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 7 /* externalParamList */
        start local 7 // java.util.List externalParamList
        14: .line 7572
            aconst_null
            astore 8 /* iterableType */
        start local 8 // java.lang.Class iterableType
        15: .line 7573
            aload 0 /* iterator */
            ifnull 24
        16: .line 7576
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 18
        17: .line 7577
            aload 0 /* iterator */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 7 /* externalParamList */
        18: .line 7579
      StackMap locals: java.util.List java.lang.Class
      StackMap stack:
            aload 0 /* iterator */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 9 /* itype */
        start local 9 // java.lang.invoke.MethodType itype
        19: .line 7580
            ldc Ljava/util/Iterator;
            aload 9 /* itype */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 21
        20: .line 7581
            ldc "iteratedLoop first argument must have Iterator return type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        21: .line 7583
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            aload 9 /* itype */
            iconst_0
            aload 7 /* externalParamList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 32
        22: .line 7584
            aload 9 /* itype */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 7 /* externalParamList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            astore 10 /* expected */
        start local 10 // java.lang.invoke.MethodType expected
        23: .line 7585
            ldc "iterator parameters"
            aload 9 /* itype */
            aload 10 /* expected */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 10 // java.lang.invoke.MethodType expected
        end local 9 // java.lang.invoke.MethodType itype
        24: .line 7588
      StackMap locals:
      StackMap stack:
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 28
        25: .line 7592
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Iterable;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 7 /* externalParamList */
        26: .line 7593
            ldc Ljava/lang/Iterable;
            astore 8 /* iterableType */
        27: .line 7594
            goto 32
        28: .line 7598
      StackMap locals:
      StackMap stack:
            aload 7 /* externalParamList */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 8 /* iterableType */
        29: .line 7599
            ldc Ljava/lang/Iterable;
            aload 8 /* iterableType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 32
        30: .line 7601
            new java.lang.StringBuilder
            dup
            ldc "inferred first loop argument must inherit from Iterable: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* iterableType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        31: .line 7600
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        32: .line 7605
      StackMap locals:
      StackMap stack:
            aload 1 /* init */
            ifnull 37
        33: .line 7606
            aload 1 /* init */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 9 /* initType */
        start local 9 // java.lang.invoke.MethodType initType
        34: .line 7607
            aload 9 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 36
        35: .line 7608
            aload 9 /* initType */
            iconst_0
            aload 7 /* externalParamList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 7609
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            ldc "loop initializer"
            aload 9 /* initType */
            aload 4 /* returnType */
            aload 7 /* externalParamList */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodType;
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // java.lang.invoke.MethodType initType
        37: .line 7612
      StackMap locals:
      StackMap stack:
            aload 8 /* iterableType */
            areturn
        end local 8 // java.lang.Class iterableType
        end local 7 // java.util.List externalParamList
        end local 6 // int vsize
        end local 5 // java.util.List internalParamList
        end local 4 // java.lang.Class returnType
        end local 3 // java.lang.invoke.MethodType bodyType
        end local 2 // java.lang.invoke.MethodHandle body
        end local 1 // java.lang.invoke.MethodHandle init
        end local 0 // java.lang.invoke.MethodHandle iterator
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   38     0           iterator  Ljava/lang/invoke/MethodHandle;
            0   38     1               init  Ljava/lang/invoke/MethodHandle;
            0   38     2               body  Ljava/lang/invoke/MethodHandle;
            2   38     3           bodyType  Ljava/lang/invoke/MethodType;
            3   38     4         returnType  Ljava/lang/Class<*>;
            4   38     5  internalParamList  Ljava/util/List<Ljava/lang/Class<*>;>;
            7   38     6              vsize  I
            9   10     7           expected  Ljava/lang/invoke/MethodType;
           12   13     7           expected  Ljava/lang/invoke/MethodType;
           14   38     7  externalParamList  Ljava/util/List<Ljava/lang/Class<*>;>;
           15   38     8       iterableType  Ljava/lang/Class<*>;
           19   24     9              itype  Ljava/lang/invoke/MethodType;
           23   24    10           expected  Ljava/lang/invoke/MethodType;
           34   37     9           initType  Ljava/lang/invoke/MethodType;
    Signature: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/Class<*>;
    MethodParameters:
          Name  Flags
      iterator  
      init      
      body      

  static java.lang.invoke.MethodHandle swapArguments(java.lang.invoke.MethodHandle, int, int);
    descriptor: (Ljava/lang/invoke/MethodHandle;II)Ljava/lang/invoke/MethodHandle;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // java.lang.invoke.MethodHandle mh
        start local 1 // int i
        start local 2 // int j
         0: .line 7618
            aload 0 /* mh */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* arity */
        start local 3 // int arity
         1: .line 7619
            iload 3 /* arity */
            newarray 10
            astore 4 /* order */
        start local 4 // int[] order
         2: .line 7620
            iconst_0
            istore 5 /* k */
        start local 5 // int k
         3: goto 5
      StackMap locals: int int[] int
      StackMap stack:
         4: aload 4 /* order */
            iload 5 /* k */
            iload 5 /* k */
            iastore
            iinc 5 /* k */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* k */
            iload 3 /* arity */
            if_icmplt 4
        end local 5 // int k
         6: .line 7621
            aload 4 /* order */
            iload 1 /* i */
            iload 2 /* j */
            iastore
            aload 4 /* order */
            iload 2 /* j */
            iload 1 /* i */
            iastore
         7: .line 7622
            aload 0 /* mh */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterArray:()[Ljava/lang/Class;
            astore 5 /* types */
        start local 5 // java.lang.Class[] types
         8: .line 7623
            aload 5 /* types */
            iload 1 /* i */
            aaload
            astore 6 /* ti */
        start local 6 // java.lang.Class ti
         9: aload 5 /* types */
            iload 1 /* i */
            aload 5 /* types */
            iload 2 /* j */
            aaload
            aastore
            aload 5 /* types */
            iload 2 /* j */
            aload 6 /* ti */
            aastore
        10: .line 7624
            aload 0 /* mh */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 5 /* types */
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 7 /* swapType */
        start local 7 // java.lang.invoke.MethodType swapType
        11: .line 7625
            aload 0 /* mh */
            aload 7 /* swapType */
            aload 4 /* order */
            invokestatic java.lang.invoke.MethodHandles.permuteArguments:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;[I)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 7 // java.lang.invoke.MethodType swapType
        end local 6 // java.lang.Class ti
        end local 5 // java.lang.Class[] types
        end local 4 // int[] order
        end local 3 // int arity
        end local 2 // int j
        end local 1 // int i
        end local 0 // java.lang.invoke.MethodHandle mh
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0        mh  Ljava/lang/invoke/MethodHandle;
            0   12     1         i  I
            0   12     2         j  I
            1   12     3     arity  I
            2   12     4     order  [I
            3    6     5         k  I
            8   12     5     types  [Ljava/lang/Class;
            9   12     6        ti  Ljava/lang/Class<*>;
           11   12     7  swapType  Ljava/lang/invoke/MethodType;
    MethodParameters:
      Name  Flags
      mh    
      i     
      j     

  public static java.lang.invoke.MethodHandle tryFinally(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle cleanup
         0: .line 7718
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 2 /* targetParamTypes */
        start local 2 // java.util.List targetParamTypes
         1: .line 7719
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 3 /* rtype */
        start local 3 // java.lang.Class rtype
         2: .line 7721
            aload 0 /* target */
            aload 1 /* cleanup */
            invokestatic java.lang.invoke.MethodHandles.tryFinallyChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         3: .line 7726
            aload 1 /* cleanup */
            aload 3 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 4
            iconst_1
            goto 5
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.util.List java.lang.Class
      StackMap stack: java.lang.invoke.MethodHandle
         4: iconst_2
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.util.List java.lang.Class
      StackMap stack: java.lang.invoke.MethodHandle int
         5: aload 2 /* targetParamTypes */
            iconst_0
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;I)Ljava/lang/invoke/MethodHandle;
            astore 1 /* cleanup */
         6: .line 7730
            aload 1 /* cleanup */
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            ldc Ljava/lang/Throwable;
            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;
            astore 1 /* cleanup */
         7: .line 7733
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
            aload 3 /* rtype */
            aload 2 /* targetParamTypes */
            invokestatic java.lang.invoke.MethodHandleImpl.makeTryFinally:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // java.lang.Class rtype
        end local 2 // java.util.List targetParamTypes
        end local 1 // java.lang.invoke.MethodHandle cleanup
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0            target  Ljava/lang/invoke/MethodHandle;
            0    8     1           cleanup  Ljava/lang/invoke/MethodHandle;
            1    8     2  targetParamTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            2    8     3             rtype  Ljava/lang/Class<*>;
    MethodParameters:
         Name  Flags
      target   
      cleanup  

  private static void tryFinallyChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle cleanup
         0: .line 7737
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 2 /* rtype */
        start local 2 // java.lang.Class rtype
         1: .line 7738
            aload 2 /* rtype */
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            if_acmpeq 3
         2: .line 7739
            ldc "target and return types"
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 2 /* rtype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         3: .line 7741
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 3 /* cleanupType */
        start local 3 // java.lang.invoke.MethodType cleanupType
         4: .line 7742
            ldc Ljava/lang/Throwable;
            aload 3 /* cleanupType */
            iconst_0
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 6
         5: .line 7743
            ldc "cleanup first argument and Throwable"
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            ldc Ljava/lang/Throwable;
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         6: .line 7745
      StackMap locals: java.lang.invoke.MethodType
      StackMap stack:
            aload 2 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 8
            aload 3 /* cleanupType */
            iconst_1
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aload 2 /* rtype */
            if_acmpeq 8
         7: .line 7746
            ldc "cleanup second argument and target return type"
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 2 /* rtype */
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         8: .line 7750
      StackMap locals:
      StackMap stack:
            aload 2 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_2
      StackMap locals:
      StackMap stack: int
        10: istore 4 /* cleanupArgIndex */
        start local 4 // int cleanupArgIndex
        11: .line 7751
            aload 3 /* cleanupType */
            iload 4 /* cleanupArgIndex */
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 15
        12: .line 7752
            ldc "cleanup parameters after (Throwable,result) and target parameter list prefix"
        13: .line 7753
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
        14: .line 7752
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        15: .line 7755
      StackMap locals: int
      StackMap stack:
            return
        end local 4 // int cleanupArgIndex
        end local 3 // java.lang.invoke.MethodType cleanupType
        end local 2 // java.lang.Class rtype
        end local 1 // java.lang.invoke.MethodHandle cleanup
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   16     0           target  Ljava/lang/invoke/MethodHandle;
            0   16     1          cleanup  Ljava/lang/invoke/MethodHandle;
            1   16     2            rtype  Ljava/lang/Class<*>;
            4   16     3      cleanupType  Ljava/lang/invoke/MethodType;
           11   16     4  cleanupArgIndex  I
    MethodParameters:
         Name  Flags
      target   
      cleanup  

  static int[] $SWITCH_TABLE$sun$invoke$util$Wrapper();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 86
            getstatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic sun.invoke.util.Wrapper.values:()[Lsun/invoke/util/Wrapper;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic sun.invoke.util.Wrapper.BOOLEAN:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic sun.invoke.util.Wrapper.BYTE:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic sun.invoke.util.Wrapper.CHAR:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.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 sun.invoke.util.Wrapper.DOUBLE:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            bipush 8
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic sun.invoke.util.Wrapper.FLOAT:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            bipush 7
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic sun.invoke.util.Wrapper.INT:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            iconst_5
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic sun.invoke.util.Wrapper.LONG:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            bipush 6
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic sun.invoke.util.Wrapper.OBJECT:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            bipush 9
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic sun.invoke.util.Wrapper.SHORT:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            iconst_3
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic sun.invoke.util.Wrapper.VOID:Lsun/invoke/util/Wrapper;
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            bipush 10
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            dup
            putstatic java.lang.invoke.MethodHandles.$SWITCH_TABLE$sun$invoke$util$Wrapper:[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
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError

  private static boolean lambda$0(java.lang.invoke.MethodHandle[]);
    descriptor: ([Ljava/lang/invoke/MethodHandle;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodHandle[] c
         0: .line 6621
            aload 0 /* c */
            invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/invoke/MethodHandle;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
            ireturn
        end local 0 // java.lang.invoke.MethodHandle[] c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     c  [Ljava/lang/invoke/MethodHandle;

  private static void lambda$2(java.util.List, java.util.List, java.util.List, java.util.List, java.lang.invoke.MethodHandle[]);
    descriptor: (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;[Ljava/lang/invoke/MethodHandle;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=5, args_size=5
        start local 4 // java.lang.invoke.MethodHandle[] clause
         0: .line 6622
            aload 0
            aload 4 /* clause */
            iconst_0
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 6623
            aload 1
            aload 4 /* clause */
            arraylength
            iconst_1
            if_icmpgt 2
            aconst_null
            goto 3
      StackMap locals:
      StackMap stack: java.util.List
         2: aload 4 /* clause */
            iconst_1
            aaload
      StackMap locals: java.util.List java.util.List java.util.List java.util.List java.lang.invoke.MethodHandle[]
      StackMap stack: java.util.List java.lang.invoke.MethodHandle
         3: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 6624
            aload 2
            aload 4 /* clause */
            arraylength
            iconst_2
            if_icmpgt 5
            aconst_null
            goto 6
      StackMap locals:
      StackMap stack: java.util.List
         5: aload 4 /* clause */
            iconst_2
            aaload
      StackMap locals: java.util.List java.util.List java.util.List java.util.List java.lang.invoke.MethodHandle[]
      StackMap stack: java.util.List java.lang.invoke.MethodHandle
         6: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 6625
            aload 3
            aload 4 /* clause */
            arraylength
            iconst_3
            if_icmpgt 8
            aconst_null
            goto 9
      StackMap locals:
      StackMap stack: java.util.List
         8: aload 4 /* clause */
            iconst_3
            aaload
      StackMap locals: java.util.List java.util.List java.util.List java.util.List java.lang.invoke.MethodHandle[]
      StackMap stack: java.util.List java.lang.invoke.MethodHandle
         9: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        10: .line 6626
            return
        end local 4 // java.lang.invoke.MethodHandle[] clause
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     4  clause  [Ljava/lang/invoke/MethodHandle;

  private static boolean lambda$4(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class t
         0: .line 6645
            aload 0 /* t */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.Class t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     t  Ljava/lang/Class<*>;

  private static boolean lambda$10(java.util.List, java.util.List);
    descriptor: (Ljava/util/List;Ljava/util/List;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.List pl
         0: .line 6690
            aload 1 /* pl */
            aload 0
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.util.List pl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    pl  Ljava/util/List<Ljava/lang/Class<*>;>;

  private static boolean lambda$14(java.util.List, java.util.List);
    descriptor: (Ljava/util/List;Ljava/util/List;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.List pl
         0: .line 6692
            aload 1 /* pl */
            aload 0
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.util.List pl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    pl  Ljava/util/List<Ljava/lang/Class<*>;>;

  private static boolean lambda$16(java.lang.invoke.MethodHandle[]);
    descriptor: ([Ljava/lang/invoke/MethodHandle;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.invoke.MethodHandle[] c
         0: .line 6704
            aload 0 /* c */
            arraylength
            iconst_4
            if_icmple 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.invoke.MethodHandle[] c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     c  [Ljava/lang/invoke/MethodHandle;

  private static boolean lambda$19(int, java.lang.invoke.MethodType);
    descriptor: (ILjava/lang/invoke/MethodType;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.invoke.MethodType t
         0: .line 6721
            aload 1 /* t */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iload 0
            if_icmple 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.lang.invoke.MethodType t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     t  Ljava/lang/invoke/MethodType;

  private static java.util.List lambda$21(java.util.List, java.util.List);
    descriptor: (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.List p
        start local 1 // java.util.List q
         0: .line 6723
            aload 0 /* p */
            invokeinterface java.util.List.size:()I
            aload 1 /* q */
            invokeinterface java.util.List.size:()I
            if_icmplt 1
            aload 0 /* p */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* q */
      StackMap locals:
      StackMap stack: java.util.List
         2: areturn
        end local 1 // java.util.List q
        end local 0 // java.util.List p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     p  Ljava/util/List<Ljava/lang/Class<*>;>;
            0    3     1     q  Ljava/util/List<Ljava/lang/Class<*>;>;

  private static java.util.List lambda$22(java.util.List, java.util.List);
    descriptor: (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.List p
        start local 1 // java.util.List q
         0: .line 6729
            aload 0 /* p */
            invokeinterface java.util.List.size:()I
            aload 1 /* q */
            invokeinterface java.util.List.size:()I
            if_icmplt 1
            aload 0 /* p */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* q */
      StackMap locals:
      StackMap stack: java.util.List
         2: areturn
        end local 1 // java.util.List q
        end local 0 // java.util.List p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     p  Ljava/util/List<Ljava/lang/Class<*>;>;
            0    3     1     q  Ljava/util/List<Ljava/lang/Class<*>;>;

  private static boolean lambda$26(java.util.List, java.lang.invoke.MethodType);
    descriptor: (Ljava/util/List;Ljava/lang/invoke/MethodType;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // java.lang.invoke.MethodType t
         0: .line 6740
            aload 1 /* t */
            iconst_0
            aload 0
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.lang.invoke.MethodType t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     t  Ljava/lang/invoke/MethodType;

  private static boolean lambda$30(java.lang.Class, java.lang.Class);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.Class t
         0: .line 6748
            aload 1 /* t */
            aload 0
            if_acmpeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.lang.Class t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     t  Ljava/lang/Class<Ljava/lang/Object;>;

  private static boolean lambda$35(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class t
         0: .line 6757
            aload 0 /* t */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.Class t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     t  Ljava/lang/Class<Ljava/lang/Object;>;

  private static boolean lambda$39(java.util.List, java.lang.invoke.MethodType);
    descriptor: (Ljava/util/List;Ljava/lang/invoke/MethodType;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // java.lang.invoke.MethodType t
         0: .line 6764
            aload 1 /* t */
            iconst_0
            aload 0
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.lang.invoke.MethodType t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     t  Ljava/lang/invoke/MethodType;

  private static java.lang.invoke.MethodHandle lambda$40(java.util.List, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/util/List;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=2
        start local 1 // java.lang.invoke.MethodHandle h
         0: .line 6772
            aload 1 /* h */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 2 /* pc */
        start local 2 // int pc
         1: .line 6773
            aload 0
            invokeinterface java.util.List.size:()I
            istore 3 /* tpsize */
        start local 3 // int tpsize
         2: .line 6774
            iload 2 /* pc */
            iload 3 /* tpsize */
            if_icmpge 3
            aload 1 /* h */
            iload 2 /* pc */
            aload 0
            iload 2 /* pc */
            iload 3 /* tpsize */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            invokestatic java.lang.invoke.MethodHandles.dropArguments0:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;)Ljava/lang/invoke/MethodHandle;
            goto 4
      StackMap locals: int int
      StackMap stack:
         3: aload 1 /* h */
      StackMap locals:
      StackMap stack: java.lang.invoke.MethodHandle
         4: areturn
        end local 3 // int tpsize
        end local 2 // int pc
        end local 1 // java.lang.invoke.MethodHandle h
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     1       h  Ljava/lang/invoke/MethodHandle;
            1    5     2      pc  I
            2    5     3  tpsize  I
}
SourceFile: "MethodHandles.java"
NestMembers:
  java.lang.invoke.MethodHandles$Lookup  java.lang.invoke.MethodHandles$Lookup$ClassDefiner  java.lang.invoke.MethodHandles$Lookup$ClassFile  java.lang.invoke.MethodHandles$Lookup$ClassOption
InnerClasses:
  final BasicType = java.lang.invoke.LambdaForm$BasicType of java.lang.invoke.LambdaForm
  Factory = java.lang.invoke.MemberName$Factory of java.lang.invoke.MemberName
  final ArrayAccess = java.lang.invoke.MethodHandleImpl$ArrayAccess of java.lang.invoke.MethodHandleImpl
  final Intrinsic = java.lang.invoke.MethodHandleImpl$Intrinsic of java.lang.invoke.MethodHandleImpl
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final AccessMode = java.lang.invoke.VarHandle$AccessMode of java.lang.invoke.VarHandle