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 78
            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 82
            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 252
            new java.lang.reflect.ReflectPermission
            dup
            ldc "suppressAccessChecks"
            invokespecial java.lang.reflect.ReflectPermission.<init>:(Ljava/lang/String;)V
         5: .line 251
            putstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
         6: .line 3371
            bipush 10
            anewarray java.lang.invoke.MethodHandle
            putstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
         7: .line 3389
            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 80
            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 112
            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 121
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            astore 0 /* caller */
        start local 0 // java.lang.Class caller
         1: .line 122
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ifnonnull 3
         2: .line 123
            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 125
      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 157
            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=6, args_size=2
        start local 0 // java.lang.Class targetClass
        start local 1 // java.lang.invoke.MethodHandles$Lookup lookup
         0: .line 194
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sm */
        start local 2 // java.lang.SecurityManager sm
         1: .line 195
            aload 2 /* sm */
            ifnull 2
            aload 2 /* sm */
            getstatic java.lang.invoke.MethodHandles.ACCESS_PERMISSION:Ljava/security/Permission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         2: .line 196
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 4
         3: .line 197
            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
         4: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 6
         5: .line 199
            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
         6: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.getModule:()Ljava/lang/Module;
            astore 3 /* targetModule */
        start local 3 // java.lang.Module targetModule
         7: .line 201
            aload 1 /* lookup */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getModule:()Ljava/lang/Module;
            astore 4 /* callerModule */
        start local 4 // java.lang.Module callerModule
         8: .line 202
            aload 4 /* callerModule */
            aload 3 /* targetModule */
            invokevirtual java.lang.Module.canRead:(Ljava/lang/Module;)Z
            ifne 10
         9: .line 203
            new java.lang.IllegalAccessException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* 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 3 /* 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
        10: .line 204
      StackMap locals: java.lang.Module java.lang.Module
      StackMap stack:
            aload 3 /* targetModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifeq 15
        11: .line 205
            aload 0 /* targetClass */
            invokevirtual java.lang.Class.getPackageName:()Ljava/lang/String;
            astore 5 /* pn */
        start local 5 // java.lang.String pn
        12: .line 206
            getstatic java.lang.invoke.MethodHandles.$assertionsDisabled:Z
            ifne 13
            aload 5 /* pn */
            invokevirtual java.lang.String.length:()I
            ifgt 13
            new java.lang.AssertionError
            dup
            ldc "unnamed package cannot be in named module"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        13: .line 207
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* targetModule */
            aload 5 /* pn */
            aload 4 /* callerModule */
            invokevirtual java.lang.Module.isOpen:(Ljava/lang/String;Ljava/lang/Module;)Z
            ifne 15
        14: .line 208
            new java.lang.IllegalAccessException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 3 /* 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 5 /* 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 4 /* 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 5 // java.lang.String pn
        15: .line 210
      StackMap locals:
      StackMap stack:
            aload 1 /* lookup */
            invokevirtual java.lang.invoke.MethodHandles$Lookup.lookupModes:()I
            bipush 16
            iand
            ifne 17
        16: .line 211
            new java.lang.IllegalAccessException
            dup
            ldc "lookup does not have MODULE lookup mode"
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 212
      StackMap locals:
      StackMap stack:
            aload 4 /* callerModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifne 21
            aload 3 /* targetModule */
            invokevirtual java.lang.Module.isNamed:()Z
            ifeq 21
        18: .line 213
            invokestatic jdk.internal.module.IllegalAccessLogger.illegalAccessLogger:()Ljdk/internal/module/IllegalAccessLogger;
            astore 5 /* logger */
        start local 5 // jdk.internal.module.IllegalAccessLogger logger
        19: .line 214
            aload 5 /* logger */
            ifnull 21
        20: .line 215
            aload 5 /* logger */
            aload 1 /* lookup */
            aload 0 /* targetClass */
            invokevirtual jdk.internal.module.IllegalAccessLogger.logIfOpenedForIllegalAccess:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;)V
        end local 5 // jdk.internal.module.IllegalAccessLogger logger
        21: .line 218
      StackMap locals:
      StackMap stack:
            new java.lang.invoke.MethodHandles$Lookup
            dup
            aload 0 /* targetClass */
            invokespecial java.lang.invoke.MethodHandles$Lookup.<init>:(Ljava/lang/Class;)V
            areturn
        end local 4 // java.lang.Module callerModule
        end local 3 // java.lang.Module targetModule
        end local 2 // java.lang.SecurityManager sm
        end local 1 // java.lang.invoke.MethodHandles$Lookup lookup
        end local 0 // java.lang.Class targetClass
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0   targetClass  Ljava/lang/Class<*>;
            0   22     1        lookup  Ljava/lang/invoke/MethodHandles$Lookup;
            1   22     2            sm  Ljava/lang/SecurityManager;
            7   22     3  targetModule  Ljava/lang/Module;
            8   22     4  callerModule  Ljava/lang/Module;
           12   15     5            pn  Ljava/lang/String;
           19   21     5        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  
      lookup       

  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 245
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* smgr */
        start local 2 // java.lang.SecurityManager smgr
         1: .line 246
            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 247
      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 248
            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 2529
            aload 0 /* arrayClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 2
         1: .line 2530
            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 2532
      StackMap locals:
      StackMap stack:
            bipush 11
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
         3: .line 2533
            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 2532
            astore 1 /* ani */
        start local 1 // java.lang.invoke.MethodHandle ani
         5: .line 2534
            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 2549
            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 2564
            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 2579
            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 2636
            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 2718
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 2719
            aload 0 /* viewArrayClass */
         2: .line 2720
            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 2719
      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 2806
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 2807
            aload 0 /* viewArrayClass */
         2: .line 2808
            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 2807
      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 2862
            iload 1 /* leadingArgCount */
            iflt 1
            iload 1 /* leadingArgCount */
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 2
         1: .line 2863
      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 2864
      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 2865
            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 2905
            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 2944
            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 2963
            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 2992
            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 2997
            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 3048
            aload 0 /* target */
            aload 1 /* newType */
            invokestatic java.lang.invoke.MethodHandles.explicitCastArgumentsChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
         1: .line 3050
            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 3051
            aload 2 /* oldType */
            aload 1 /* newType */
            if_acmpne 3
            aload 0 /* target */
            areturn
         3: .line 3052
      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 3053
            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 3055
      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 3059
            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 3060
            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 3062
      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 3128
            aload 2 /* reorder */
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            astore 2 /* reorder */
         1: .line 3129
            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 3130
            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 3133
            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 3134
            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 3135
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 6 /* newArity */
        start local 6 // int newArity
         6: .line 3140
            goto 39
        start local 7 // int ddIdx
         7: .line 3141
      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 3148
            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 3149
            iconst_0
            istore 11 /* killFirst */
        start local 11 // boolean killFirst
        12: .line 3150
            goto 14
        start local 12 // int val
        13: .line 3153
      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 3150
      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 3155
            iload 11 /* killFirst */
            ifne 19
        17: .line 3156
            iload 9 /* dstPos */
            istore 8 /* srcPos */
        18: .line 3157
            iload 7 /* ddIdx */
            istore 9 /* dstPos */
        19: .line 3159
      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 3160
            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 3161
      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 3163
            iload 9 /* dstPos */
            iconst_1
            iadd
            istore 12 /* tailPos */
        start local 12 // int tailPos
        23: .line 3164
            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 3165
            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 3166
            goto 38
        26: .line 3167
      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 3168
            goto 30
        29: .line 3171
      StackMap locals: int int
      StackMap stack:
            iinc 9 /* insPos */ 1
        30: .line 3168
      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 3173
      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 3174
            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 3175
            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 3177
            iload 9 /* insPos */
            iconst_1
            iadd
            istore 11 /* tailPos */
        start local 11 // int tailPos
        35: .line 3178
            aload 2 /* reorder */
            aload 2 /* reorder */
            arraylength
            iconst_1
            iadd
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 2 /* reorder */
        36: .line 3179
            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 3180
            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 3182
      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 3140
      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 3184
            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 3186
      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 3187
            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 3188
            aload 4 /* result */
            areturn
        45: .line 3189
      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 3201
            iload 1 /* newArity */
            bipush 63
            if_icmpge 22
         1: .line 3202
            lconst_0
            lstore 2 /* mask */
        start local 2 // long mask
         2: .line 3203
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 12
         4: .line 3204
      StackMap locals: long int
      StackMap stack:
            aload 0 /* reorder */
            iload 4 /* i */
            iaload
            istore 5 /* arg */
        start local 5 // int arg
         5: .line 3205
            iload 5 /* arg */
            iload 1 /* newArity */
            if_icmplt 7
         6: .line 3206
            aload 0 /* reorder */
            arraylength
            ireturn
         7: .line 3208
      StackMap locals: int
      StackMap stack:
            lconst_1
            iload 5 /* arg */
            lshl
            lstore 6 /* bit */
        start local 6 // long bit
         8: .line 3209
            lload 2 /* mask */
            lload 6 /* bit */
            land
            lconst_0
            lcmp
            ifeq 10
         9: .line 3210
            iload 4 /* i */
            ireturn
        10: .line 3212
      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 3203
            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 3214
            lload 2 /* mask */
            lconst_1
            iload 1 /* newArity */
            lshl
            lconst_1
            lsub
            lcmp
            ifne 16
        14: .line 3215
            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 3216
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        16: .line 3219
      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 3220
            lload 4 /* zeroBit */
            invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
            istore 6 /* zeroPos */
        start local 6 // int zeroPos
        18: .line 3221
            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 3222
      StackMap locals: long int
      StackMap stack:
            iload 6 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 21
        20: .line 3223
            iconst_0
            ireturn
        21: .line 3225
      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 3228
      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 3229
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        24: goto 32
        25: .line 3230
      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 3231
            iload 4 /* arg */
            iload 1 /* newArity */
            if_icmplt 28
        27: .line 3232
            aload 0 /* reorder */
            arraylength
            ireturn
        28: .line 3234
      StackMap locals: int
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 30
        29: .line 3235
            iload 3 /* i */
            ireturn
        30: .line 3237
      StackMap locals:
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.set:(I)V
        end local 4 // int arg
        31: .line 3229
            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 3239
            aload 2 /* mask */
            iconst_0
            invokevirtual java.util.BitSet.nextClearBit:(I)I
            istore 3 /* zeroPos */
        start local 3 // int zeroPos
        34: .line 3240
            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 3241
      StackMap locals:
      StackMap stack:
            iload 3 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 37
        36: .line 3242
            iconst_0
            ireturn
        37: .line 3244
      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  

  private static boolean permuteArgumentChecks(int[], java.lang.invoke.MethodType, java.lang.invoke.MethodType);
    descriptor: ([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, 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 3249
            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 3250
            ldc "return types do not match"
         2: .line 3251
            aload 2 /* oldType */
            aload 1 /* newType */
         3: .line 3250
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 3252
      StackMap locals:
      StackMap stack:
            aload 0 /* reorder */
            arraylength
            aload 2 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmpne 21
         5: .line 3253
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* limit */
        start local 3 // int limit
         6: .line 3254
            iconst_0
            istore 4 /* bad */
        start local 4 // boolean bad
         7: .line 3255
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         8: goto 19
         9: .line 3256
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* reorder */
            iload 5 /* j */
            iaload
            istore 6 /* i */
        start local 6 // int i
        10: .line 3257
            iload 6 /* i */
            iflt 11
            iload 6 /* i */
            iload 3 /* limit */
            if_icmplt 12
        11: .line 3258
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 4 /* bad */
            goto 20
        12: .line 3260
      StackMap locals:
      StackMap stack:
            aload 1 /* newType */
            iload 6 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 7 /* src */
        start local 7 // java.lang.Class src
        13: .line 3261
            aload 2 /* oldType */
            iload 5 /* j */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            astore 8 /* dst */
        start local 8 // java.lang.Class dst
        14: .line 3262
            aload 7 /* src */
            aload 8 /* dst */
            if_acmpeq 18
        15: .line 3263
            ldc "parameter types do not match after reorder"
        16: .line 3264
            aload 2 /* oldType */
            aload 1 /* newType */
        17: .line 3263
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 8 // java.lang.Class dst
        end local 7 // java.lang.Class src
        end local 6 // int i
        18: .line 3255
      StackMap locals:
      StackMap stack:
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        19: iload 5 /* j */
            aload 0 /* reorder */
            arraylength
            if_icmplt 9
        end local 5 // int j
        20: .line 3266
      StackMap locals:
      StackMap stack:
            iload 4 /* bad */
            ifne 21
            iconst_1
            ireturn
        end local 4 // boolean bad
        end local 3 // int limit
        21: .line 3268
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "bad reorder array: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* reorder */
            invokestatic java.util.Arrays.toString:([I)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
        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   22     0  reorder  [I
            0   22     1  newType  Ljava/lang/invoke/MethodType;
            0   22     2  oldType  Ljava/lang/invoke/MethodType;
            6   21     3    limit  I
            7   21     4      bad  Z
            8   20     5        j  I
           10   18     6        i  I
           13   18     7      src  Ljava/lang/Class<*>;
           14   18     8      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 3288
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 8
         1: .line 3289
            aload 0 /* type */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 3
         2: .line 3290
            ldc "void type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 3291
      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 3292
            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 3293
            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 3294
            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 3295
      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 3297
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            ifnonnull 10
         9: .line 3298
            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 3299
      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 3312
            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 3313
            aload 1 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         4: .line 3314
            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 3315
            aload 3 /* ident */
            ifnonnull 7
         6: .line 3316
            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 3318
      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 3319
            aload 3 /* ident */
            areturn
         9: .line 3321
      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 3322
      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 3342
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3343
            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 3347
            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 3367
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3368
            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 3373
            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 3374
            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 3375
            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 3379
            aload 0 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         1: .line 3380
            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 3381
            aload 3 /* zero */
            ifnonnull 4
         3: .line 3382
            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 3384
      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 3385
            aload 3 /* zero */
            areturn
         6: .line 3386
      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 3387
      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 3391
            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 3392
            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 3393
            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 3398
            aload 0 /* cache */
            iload 1 /* pos */
            aaload
            astore 3 /* prev */
        start local 3 // java.lang.invoke.MethodHandle prev
         1: .line 3399
            aload 3 /* prev */
            ifnull 2
            aload 3 /* prev */
            areturn
         2: .line 3400
      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 3438
            aload 2 /* values */
            arraylength
            istore 3 /* insCount */
        start local 3 // int insCount
         1: .line 3439
            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 3440
            iload 3 /* insCount */
            ifne 3
            aload 0 /* target */
            areturn
         3: .line 3441
      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 3442
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 14
         6: .line 3443
      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 3444
            aload 4 /* ptypes */
            iload 1 /* pos */
            iload 6 /* i */
            iadd
            aaload
            astore 8 /* ptype */
        start local 8 // java.lang.Class ptype
         8: .line 3445
            aload 8 /* ptype */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 11
         9: .line 3446
            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 3447
            goto 13
        11: .line 3448
      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 3449
            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 3442
      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 3452
            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 3457
            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 3459
            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 3460
            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 3461
      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 3462
      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 3463
      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 3464
      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 3465
      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 3470
            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 3471
            aload 3 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         2: .line 3472
            iload 4 /* outargs */
            iload 1 /* insCount */
            isub
            istore 5 /* inargs */
        start local 5 // int inargs
         3: .line 3473
            iload 5 /* inargs */
            ifge 5
         4: .line 3474
            ldc "too many values to insert"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 3475
      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 3476
      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 3477
      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 3524
            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 3528
            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 3533
            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 3534
            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 3535
            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 3536
            iload 4 /* dropped */
            ifne 4
            aload 0 /* target */
            areturn
         4: .line 3537
      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 3538
            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 3539
            iconst_1
            iload 1 /* pos */
            iadd
            istore 8 /* insertFormArg */
        start local 8 // int insertFormArg
         7: .line 3540
            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 3541
            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 3540
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 3543
            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 3544
            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 3548
            aload 2 /* valueTypes */
            invokeinterface java.util.List.size:()I
            istore 3 /* dropped */
        start local 3 // int dropped
         1: .line 3549
            iload 3 /* dropped */
            invokestatic java.lang.invoke.MethodType.checkSlotCount:(I)V
         2: .line 3550
            aload 0 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         3: .line 3551
            iload 4 /* outargs */
            iload 3 /* dropped */
            iadd
            istore 5 /* inargs */
        start local 5 // int inargs
         4: .line 3552
            iload 1 /* pos */
            iflt 5
            iload 1 /* pos */
            iload 4 /* outargs */
            if_icmple 8
         5: .line 3553
      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 3554
            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 3553
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         8: .line 3556
      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 3607
            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 3613
            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 3614
            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 3615
            aload 5 /* oldTypes */
            invokeinterface java.util.List.size:()I
            istore 6 /* match */
        start local 6 // int match
         3: .line 3616
            iload 1 /* skip */
            ifeq 8
         4: .line 3617
            iload 1 /* skip */
            iflt 5
            iload 1 /* skip */
            iload 6 /* match */
            if_icmple 6
         5: .line 3618
      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 3620
      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 3621
            iload 6 /* match */
            iload 1 /* skip */
            isub
            istore 6 /* match */
         8: .line 3623
      StackMap locals:
      StackMap stack:
            aload 2 /* newTypes */
            astore 7 /* addTypes */
        start local 7 // java.util.List addTypes
         9: .line 3624
            aload 7 /* addTypes */
            invokeinterface java.util.List.size:()I
            istore 8 /* add */
        start local 8 // int add
        10: .line 3625
            iload 3 /* pos */
            ifeq 16
        11: .line 3626
            iload 3 /* pos */
            iflt 12
            iload 3 /* pos */
            iload 8 /* add */
            if_icmple 13
        12: .line 3627
      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 3629
      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 3630
            iload 8 /* add */
            iload 3 /* pos */
            isub
            istore 8 /* add */
        15: .line 3631
            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 3634
      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 3635
      StackMap locals:
      StackMap stack:
            iload 4 /* nullOnFailure */
            ifeq 19
        18: .line 3636
            aconst_null
            areturn
        19: .line 3638
      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 3640
      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 3641
            iload 8 /* add */
            iload 6 /* match */
            isub
            istore 8 /* add */
        22: .line 3642
            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 3645
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            astore 9 /* adapter */
        start local 9 // java.lang.invoke.MethodHandle adapter
        24: .line 3646
            iload 8 /* add */
            ifle 26
        25: .line 3647
            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 3650
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            iload 3 /* pos */
            ifle 28
        27: .line 3651
            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 3654
      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 3714
            aload 0 /* target */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3715
            aload 2 /* newTypes */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 3716
            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 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=3, 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 3797
            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 3798
            aload 0 /* target */
            astore 3 /* adapter */
        start local 3 // java.lang.invoke.MethodHandle adapter
         2: .line 3799
            iload 1 /* pos */
            iconst_1
            isub
            istore 4 /* curPos */
        start local 4 // int curPos
         3: .line 3800
            aload 2 /* filters */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 9
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int top int int java.lang.invoke.MethodHandle[]
      StackMap stack:
         4: aload 8
            iload 6
            aaload
            astore 5 /* filter */
        start local 5 // java.lang.invoke.MethodHandle filter
         5: .line 3801
            iinc 4 /* curPos */ 1
         6: .line 3802
            aload 5 /* filter */
            ifnonnull 7
            goto 8
         7: .line 3803
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle int int java.lang.invoke.MethodHandle[]
      StackMap stack:
            aload 3 /* adapter */
            iload 4 /* curPos */
            aload 5 /* filter */
            invokestatic java.lang.invoke.MethodHandles.filterArgument:(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 3 /* adapter */
        end local 5 // java.lang.invoke.MethodHandle filter
         8: .line 3800
      StackMap locals: java.lang.invoke.MethodHandle int java.lang.invoke.MethodHandle[] java.lang.invoke.MethodHandle int top int int java.lang.invoke.MethodHandle[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
         9: iload 6
            iload 7
            if_icmplt 4
        10: .line 3805
            aload 3 /* adapter */
            areturn
        end local 4 // int curPos
        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   11     0   target  Ljava/lang/invoke/MethodHandle;
            0   11     1      pos  I
            0   11     2  filters  [Ljava/lang/invoke/MethodHandle;
            2   11     3  adapter  Ljava/lang/invoke/MethodHandle;
            3   11     4   curPos  I
            5    8     5   filter  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
         Name  Flags
      target   
      pos      
      filters  

  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 3810
            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 3811
            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 3812
            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 3813
            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 3814
            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 3815
            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 3816
            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 3817
            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 3818
            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 3822
            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 3823
            aload 3 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* maxPos */
        start local 4 // int maxPos
         2: .line 3824
            iload 1 /* pos */
            aload 2 /* filters */
            arraylength
            iadd
            iload 4 /* maxPos */
            if_icmple 4
         3: .line 3825
            ldc "too many filters"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 3826
      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 3829
            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 3830
            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 3831
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            if_icmpne 4
         3: .line 3832
            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 3833
      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 3834
      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 3957
            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 3958
            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 3959
            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 3961
            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 3962
            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 3963
            aload 6 /* lform */
            ifnull 7
         6: .line 3964
            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 3967
      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 3968
            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 3972
            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 3973
            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 3974
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 5 /* rtype */
        start local 5 // java.lang.Class rtype
         3: .line 3975
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 6 /* filterArgs */
        start local 6 // java.util.List filterArgs
         4: .line 3976
            aload 5 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 6
         5: .line 3977
            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 3979
      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 3980
            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 3982
      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 4051
            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 4052
            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 4053
            aload 2 /* targetType */
            aload 3 /* filterType */
            invokestatic java.lang.invoke.MethodHandles.filterReturnValueChecks:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
         3: .line 4054
            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 4055
            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 4056
            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 4057
            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 4058
            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 4059
            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 4063
            aload 0 /* targetType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 2 /* rtype */
        start local 2 // java.lang.Class rtype
         1: .line 4064
            aload 1 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* filterValues */
        start local 3 // int filterValues
         2: .line 4065
            iload 3 /* filterValues */
            ifne 4
         3: .line 4066
            aload 2 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            goto 5
         4: .line 4067
      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 4068
      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 4069
      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  

  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 4160
            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 4234
            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 4235
            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 4236
            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 4237
            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 4238
            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 4239
            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 4240
            aload 3 /* targetType */
            astore 9 /* newType */
        start local 9 // java.lang.invoke.MethodType newType
         9: .line 4241
            iload 7 /* dropResult */
            ifne 11
        10: .line 4242
            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 4244
      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 4245
            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  

  static java.lang.invoke.MethodHandle foldArguments(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=11, args_size=4
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // int pos
        start local 2 // java.lang.invoke.MethodHandle combiner
        start local 3 // int[] argPositions
         0: .line 4256
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 4 /* targetType */
        start local 4 // java.lang.invoke.MethodType targetType
         1: .line 4257
            aload 2 /* combiner */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            astore 5 /* combinerType */
        start local 5 // java.lang.invoke.MethodType combinerType
         2: .line 4258
            iload 1 /* pos */
            aload 4 /* targetType */
            aload 5 /* combinerType */
            aload 3 /* argPositions */
            invokestatic java.lang.invoke.MethodHandles.foldArgumentChecks:(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class;
            astore 6 /* rtype */
        start local 6 // java.lang.Class rtype
         3: .line 4259
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.rebind:()Ljava/lang/invoke/BoundMethodHandle;
            astore 7 /* result */
        start local 7 // java.lang.invoke.BoundMethodHandle result
         4: .line 4260
            aload 6 /* 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 int[] 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 8 /* dropResult */
        start local 8 // boolean dropResult
         7: .line 4261
            aload 7 /* result */
            invokevirtual java.lang.invoke.BoundMethodHandle.editor:()Ljava/lang/invoke/LambdaFormEditor;
            iconst_1
            iload 1 /* pos */
            iadd
            iload 8 /* dropResult */
            aload 5 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.basicType:()Ljava/lang/invoke/MethodType;
            aload 3 /* argPositions */
            invokevirtual java.lang.invoke.LambdaFormEditor.foldArgumentsForm:(IZLjava/lang/invoke/MethodType;[I)Ljava/lang/invoke/LambdaForm;
            astore 9 /* lform */
        start local 9 // java.lang.invoke.LambdaForm lform
         8: .line 4262
            aload 4 /* targetType */
            astore 10 /* newType */
        start local 10 // java.lang.invoke.MethodType newType
         9: .line 4263
            iload 8 /* dropResult */
            ifne 11
        10: .line 4264
            aload 10 /* newType */
            iload 1 /* pos */
            iload 1 /* pos */
            iconst_1
            iadd
            invokevirtual java.lang.invoke.MethodType.dropParameterTypes:(II)Ljava/lang/invoke/MethodType;
            astore 10 /* newType */
        11: .line 4266
      StackMap locals: int java.lang.invoke.LambdaForm java.lang.invoke.MethodType
      StackMap stack:
            aload 7 /* result */
            aload 10 /* newType */
            aload 9 /* 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 7 /* result */
        12: .line 4267
            aload 7 /* result */
            areturn
        end local 10 // java.lang.invoke.MethodType newType
        end local 9 // java.lang.invoke.LambdaForm lform
        end local 8 // boolean dropResult
        end local 7 // java.lang.invoke.BoundMethodHandle result
        end local 6 // java.lang.Class rtype
        end local 5 // java.lang.invoke.MethodType combinerType
        end local 4 // java.lang.invoke.MethodType targetType
        end local 3 // int[] argPositions
        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;
            0   13     3  argPositions  [I
            1   13     4    targetType  Ljava/lang/invoke/MethodType;
            2   13     5  combinerType  Ljava/lang/invoke/MethodType;
            3   13     6         rtype  Ljava/lang/Class<*>;
            4   13     7        result  Ljava/lang/invoke/BoundMethodHandle;
            7   13     8    dropResult  Z
            8   13     9         lform  Ljava/lang/invoke/LambdaForm;
            9   13    10       newType  Ljava/lang/invoke/MethodType;
    MethodParameters:
              Name  Flags
      target        
      pos           
      combiner      
      argPositions  

  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 4271
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* foldArgs */
        start local 3 // int foldArgs
         1: .line 4272
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* rtype */
        start local 4 // java.lang.Class rtype
         2: .line 4273
            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 4274
            iload 0 /* foldPos */
            iload 5 /* foldVals */
            iadd
            istore 6 /* afterInsertPos */
        start local 6 // int afterInsertPos
         6: .line 4275
            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 4276
            iload 7 /* ok */
            ifeq 17
        10: .line 4277
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        11: goto 16
        12: .line 4278
      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 4279
            iconst_0
            istore 7 /* ok */
        14: .line 4280
            goto 17
        15: .line 4277
      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 4284
      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 4285
            iconst_0
            istore 7 /* ok */
        19: .line 4286
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifne 21
        20: .line 4287
            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 4288
      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  

  private static java.lang.Class<?> foldArgumentChecks(int, java.lang.invoke.MethodType, java.lang.invoke.MethodType, int[]);
    descriptor: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // int foldPos
        start local 1 // java.lang.invoke.MethodType targetType
        start local 2 // java.lang.invoke.MethodType combinerType
        start local 3 // int[] argPos
         0: .line 4292
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* foldArgs */
        start local 4 // int foldArgs
         1: .line 4293
            aload 3 /* argPos */
            arraylength
            iload 4 /* foldArgs */
            if_icmpeq 3
         2: .line 4294
            ldc "combiner and argument map must be equal size"
            aload 2 /* combinerType */
            aload 3 /* 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 4296
      StackMap locals: int
      StackMap stack:
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 5 /* rtype */
        start local 5 // java.lang.Class rtype
         4: .line 4297
            aload 5 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 5
            iconst_0
            goto 6
      StackMap locals: java.lang.Class
      StackMap stack:
         5: iconst_1
      StackMap locals:
      StackMap stack: int
         6: istore 6 /* foldVals */
        start local 6 // int foldVals
         7: .line 4298
            iconst_1
            istore 7 /* ok */
        start local 7 // boolean ok
         8: .line 4299
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         9: goto 19
        10: .line 4300
      StackMap locals: int int int
      StackMap stack:
            aload 3 /* argPos */
            iload 8 /* i */
            iaload
            istore 9 /* arg */
        start local 9 // int arg
        11: .line 4301
            iload 9 /* arg */
            iflt 12
            iload 9 /* arg */
            aload 1 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 13
        12: .line 4302
      StackMap locals: int
      StackMap stack:
            ldc "arg outside of target parameterRange"
            aload 1 /* targetType */
            iload 9 /* 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
        13: .line 4304
      StackMap locals:
      StackMap stack:
            aload 2 /* combinerType */
            iload 8 /* i */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            aload 1 /* targetType */
            iload 9 /* arg */
            invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
            if_acmpeq 18
        14: .line 4305
            new java.lang.StringBuilder
            dup
            ldc "target argument type at position "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* arg */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        15: .line 4306
            ldc " must match combiner argument type at index "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 8 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* targetType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        16: .line 4307
            ldc " -> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* 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 3 /* argPos */
            invokestatic java.util.Arrays.toString:([I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 4305
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // int arg
        18: .line 4299
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 8 /* i */
            iload 4 /* foldArgs */
            if_icmplt 10
        end local 8 // int i
        20: .line 4310
            iload 7 /* ok */
            ifeq 22
            iload 6 /* foldVals */
            ifeq 22
            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 22
        21: .line 4311
            iconst_0
            istore 7 /* ok */
        22: .line 4313
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifne 24
        23: .line 4314
            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
        24: .line 4315
      StackMap locals:
      StackMap stack:
            aload 5 /* rtype */
            areturn
        end local 7 // boolean ok
        end local 6 // int foldVals
        end local 5 // java.lang.Class rtype
        end local 4 // int foldArgs
        end local 3 // int[] argPos
        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   25     0       foldPos  I
            0   25     1    targetType  Ljava/lang/invoke/MethodType;
            0   25     2  combinerType  Ljava/lang/invoke/MethodType;
            0   25     3        argPos  [I
            1   25     4      foldArgs  I
            4   25     5         rtype  Ljava/lang/Class<*>;
            7   25     6      foldVals  I
            8   25     7            ok  Z
            9   20     8             i  I
           11   18     9           arg  I
    Signature: (ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[I)Ljava/lang/Class<*>;
    MethodParameters:
              Name  Flags
      foldPos       
      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 4360
            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 4361
            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 4362
            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 4363
            aload 4 /* ttype */
            aload 5 /* ftype */
            invokevirtual java.lang.invoke.MethodType.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 4364
            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 4365
      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 4366
            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 4367
      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 4368
            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 4369
            aload 0 /* test */
            ifnonnull 11
        10: .line 4370
            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 4372
      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 4376
            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 4433
            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 4434
            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 4435
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 4
         3: .line 4436
            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 4437
      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 4438
            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 4439
      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 4440
      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 4441
            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 4442
      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 4443
            aload 2 /* handler */
            ifnonnull 12
        11: .line 4444
            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 4446
      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 4463
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 4464
            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 4465
      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=3, locals=1, args_size=1
         0: .line 4810
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method orElse(Class<capture#397-of ?>) in the type Optional<Class<capture#397-of ?>> is not applicable for the arguments (Class<Void>)\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    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 4851
            aload 0 /* clauses */
            ifnull 1
            aload 0 /* clauses */
            arraylength
            ifne 2
         1: .line 4852
      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 4854
      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 4855
            ldc "null clauses are not allowed"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 4857
      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 4858
            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 4860
      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 4863
            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 4864
            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 4865
            aload 2 /* st */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
         3: .line 4864
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 4867
      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 4870
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 2 /* empty */
        start local 2 // java.util.List empty
         1: .line 4871
            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 4873
            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 4874
            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 4875
            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 4876
            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 4871
            astore 3 /* longest */
        start local 3 // java.util.List longest
         7: .line 4877
            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 4881
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 1 /* empty */
        start local 1 // java.util.List empty
         1: .line 4882
            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 4886
            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 4887
            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 4888
            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 4892
            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 4893
            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 4894
            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 4895
            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 4894
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4897
      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 4900
            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 4901
            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 4902
            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 4903
            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 4902
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4906
      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 4907
            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 4909
      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 4910
            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 4911
            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 4913
      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 4916
            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 4917
            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 4918
            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 4919
            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 4918
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4921
      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 4924
            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 4928
            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 4924
            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 4932
            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 5042
            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 5043
            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 5044
            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 5045
            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 5046
            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 5146
            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 5147
            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 5148
            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 5149
            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 5153
            aload 1 /* pred */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5154
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 5155
            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 5156
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         4: .line 5157
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* innerList */
        start local 5 // java.util.List innerList
         5: .line 5158
            aload 5 /* innerList */
            astore 6 /* outerList */
        start local 6 // java.util.List outerList
         6: .line 5159
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         7: .line 5161
            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 5163
      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 5164
            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 5166
      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 5168
      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 5169
            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 5170
            aload 7 /* predType */
            iconst_0
            aload 5 /* innerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 15
        14: .line 5171
      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 5173
      StackMap locals:
      StackMap stack:
            aload 0 /* init */
            ifnull 20
        16: .line 5174
            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 5175
            aload 8 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 19
        18: .line 5176
            aload 8 /* initType */
            iconst_0
            aload 6 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 20
        19: .line 5177
      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 5180
      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 5330
            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 5455
            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 5456
            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 5457
            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 5458
            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 5459
            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 5460
            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 5461
            aconst_null
            astore 8 /* retv */
        start local 8 // java.lang.invoke.MethodHandle retv
         7: .line 5462
            aload 5 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         8: .line 5463
            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 5464
            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 5465
            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 5467
      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 5469
            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 5470
            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 5471
            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 5472
            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 5476
            aload 0 /* start */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5477
            aload 1 /* end */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 5478
            aload 3 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 5479
            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 5480
            aload 4 /* counterType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 7
         5: .line 5481
            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 5482
            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 5483
      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 5484
            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 5485
            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 5487
      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 5488
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 6 /* returnType */
        start local 6 // java.lang.Class returnType
        12: .line 5489
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 7 /* innerList */
        start local 7 // java.util.List innerList
        13: .line 5491
            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 5492
            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 5494
      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 5495
            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 5496
      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 5498
      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 5499
            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 5501
      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 5502
            aload 9 /* outerList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 26
        24: .line 5504
            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 5505
            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 5507
      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 5508
            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 5509
            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 5511
      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 5512
            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 5513
            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 5515
      StackMap locals:
      StackMap stack:
            aload 2 /* init */
            ifnull 37
        33: .line 5516
            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 5517
            aload 11 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 6 /* returnType */
            if_acmpne 36
        35: .line 5518
            aload 11 /* initType */
            iconst_0
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 5519
      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 5522
      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 5666
            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 5667
            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 5668
            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 5669
            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 5674
            aload 0 /* iterator */
            ifnonnull 8
         5: .line 5676
            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 5677
            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 5678
            goto 10
        end local 9 // java.lang.invoke.MethodType iteratorType
        end local 7 // java.lang.invoke.MethodHandle startIter
         8: .line 5680
      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 5681
            aload 0 /* iterator */
            astore 7 /* startIter */
        start local 7 // java.lang.invoke.MethodHandle startIter
        10: .line 5683
      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 5684
            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 5688
            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 5689
            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 5690
            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 5691
            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 5695
      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 5696
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 24
        22: .line 5698
            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 5700
            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 5704
      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 5705
            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 5706
            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 5710
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5711
            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 5712
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         3: .line 5713
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* internalParamList */
        start local 5 // java.util.List internalParamList
         4: .line 5715
            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 5716
            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 5718
      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 5719
            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 5720
      StackMap locals:
      StackMap stack:
            aload 5 /* internalParamList */
            invokeinterface java.util.List.size:()I
            iload 6 /* vsize */
            if_icmpgt 13
        11: .line 5722
            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 5723
            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 5725
      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 5726
            aconst_null
            astore 8 /* iterableType */
        start local 8 // java.lang.Class iterableType
        15: .line 5727
            aload 0 /* iterator */
            ifnull 24
        16: .line 5730
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 18
        17: .line 5731
            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 5733
      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 5734
            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 5735
            ldc "iteratedLoop first argument must have Iterator return type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        21: .line 5737
      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 5738
            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 5739
            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 5742
      StackMap locals:
      StackMap stack:
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 28
        25: .line 5746
            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 5747
            ldc Ljava/lang/Iterable;
            astore 8 /* iterableType */
        27: .line 5748
            goto 32
        28: .line 5752
      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 5753
            ldc Ljava/lang/Iterable;
            aload 8 /* iterableType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 32
        30: .line 5755
            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 5754
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        32: .line 5759
      StackMap locals:
      StackMap stack:
            aload 1 /* init */
            ifnull 37
        33: .line 5760
            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 5761
            aload 9 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 36
        35: .line 5762
            aload 9 /* initType */
            iconst_0
            aload 7 /* externalParamList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 5763
      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 5766
      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 5771
            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 5772
            iload 3 /* arity */
            newarray 10
            astore 4 /* order */
        start local 4 // int[] order
         2: .line 5773
            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 5774
            aload 4 /* order */
            iload 1 /* i */
            iload 2 /* j */
            iastore
            aload 4 /* order */
            iload 2 /* j */
            iload 1 /* i */
            iastore
         7: .line 5775
            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 5776
            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 5777
            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 5778
            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 5858
            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 5859
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            pop
         2: .line 5860
            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
         3: .line 5862
            aload 0 /* target */
            aload 1 /* cleanup */
            invokestatic java.lang.invoke.MethodHandles.tryFinallyChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         4: .line 5867
            aload 1 /* cleanup */
            aload 3 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 5
            iconst_1
            goto 6
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.util.List java.lang.Class
      StackMap stack: java.lang.invoke.MethodHandle
         5: 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
         6: 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 */
         7: .line 5870
            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<*>;>;
            3    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 5874
            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 5875
            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 5876
            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 5878
      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 5879
            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 5880
            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 5882
      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 5883
            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 5887
      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 5888
            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 5889
            ldc "cleanup parameters after (Throwable,result) and target parameter list prefix"
        13: .line 5890
            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 5889
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        15: .line 5892
      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 78
            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$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 4857
            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 4874
            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 4876
            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 4882
            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 4893
            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 4901
            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 4910
            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 4917
            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 4925
            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 4926
            aload 0
            invokeinterface java.util.List.size:()I
            istore 3 /* tpsize */
        start local 3 // int tpsize
         2: .line 4927
            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
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