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 3411
            bipush 10
            anewarray java.lang.invoke.MethodHandle
            putstatic java.lang.invoke.MethodHandles.IDENTITY_MHS:[Ljava/lang/invoke/MethodHandle;
         7: .line 3429
            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 2535
            aload 0 /* arrayClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 2
         1: .line 2536
            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 2538
      StackMap locals:
      StackMap stack:
            bipush 11
            invokestatic java.lang.invoke.MethodHandleImpl.getConstantHandle:(I)Ljava/lang/invoke/MethodHandle;
         3: .line 2539
            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 2538
            astore 1 /* ani */
        start local 1 // java.lang.invoke.MethodHandle ani
         5: .line 2540
            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 2561
            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 2586
            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 2611
            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 2676
            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 2758
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 2759
            aload 0 /* viewArrayClass */
         2: .line 2760
            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 2759
      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 2846
            aload 1 /* byteOrder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 2847
            aload 0 /* viewArrayClass */
         2: .line 2848
            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 2847
      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 2902
            iload 1 /* leadingArgCount */
            iflt 1
            iload 1 /* leadingArgCount */
            aload 0 /* type */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 2
         1: .line 2903
      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 2904
      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 2905
            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 2945
            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 2984
            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 3003
            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 3032
            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 3037
            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 3088
            aload 0 /* target */
            aload 1 /* newType */
            invokestatic java.lang.invoke.MethodHandles.explicitCastArgumentsChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
         1: .line 3090
            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 3091
            aload 2 /* oldType */
            aload 1 /* newType */
            if_acmpne 3
            aload 0 /* target */
            areturn
         3: .line 3092
      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 3093
            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 3095
      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 3099
            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 3100
            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 3102
      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 3168
            aload 2 /* reorder */
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            astore 2 /* reorder */
         1: .line 3169
            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 3170
            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 3173
            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 3174
            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 3175
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 6 /* newArity */
        start local 6 // int newArity
         6: .line 3180
            goto 39
        start local 7 // int ddIdx
         7: .line 3181
      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 3188
            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 3189
            iconst_0
            istore 11 /* killFirst */
        start local 11 // boolean killFirst
        12: .line 3190
            goto 14
        start local 12 // int val
        13: .line 3193
      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 3190
      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 3195
            iload 11 /* killFirst */
            ifne 19
        17: .line 3196
            iload 9 /* dstPos */
            istore 8 /* srcPos */
        18: .line 3197
            iload 7 /* ddIdx */
            istore 9 /* dstPos */
        19: .line 3199
      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 3200
            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 3201
      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 3203
            iload 9 /* dstPos */
            iconst_1
            iadd
            istore 12 /* tailPos */
        start local 12 // int tailPos
        23: .line 3204
            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 3205
            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 3206
            goto 38
        26: .line 3207
      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 3208
            goto 30
        29: .line 3211
      StackMap locals: int int
      StackMap stack:
            iinc 9 /* insPos */ 1
        30: .line 3208
      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 3213
      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 3214
            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 3215
            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 3217
            iload 9 /* insPos */
            iconst_1
            iadd
            istore 11 /* tailPos */
        start local 11 // int tailPos
        35: .line 3218
            aload 2 /* reorder */
            aload 2 /* reorder */
            arraylength
            iconst_1
            iadd
            invokestatic java.util.Arrays.copyOf:([II)[I
            astore 2 /* reorder */
        36: .line 3219
            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 3220
            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 3222
      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 3180
      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 3224
            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 3226
      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 3227
            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 3228
            aload 4 /* result */
            areturn
        45: .line 3229
      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 3241
            iload 1 /* newArity */
            bipush 63
            if_icmpge 22
         1: .line 3242
            lconst_0
            lstore 2 /* mask */
        start local 2 // long mask
         2: .line 3243
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 12
         4: .line 3244
      StackMap locals: long int
      StackMap stack:
            aload 0 /* reorder */
            iload 4 /* i */
            iaload
            istore 5 /* arg */
        start local 5 // int arg
         5: .line 3245
            iload 5 /* arg */
            iload 1 /* newArity */
            if_icmplt 7
         6: .line 3246
            aload 0 /* reorder */
            arraylength
            ireturn
         7: .line 3248
      StackMap locals: int
      StackMap stack:
            lconst_1
            iload 5 /* arg */
            lshl
            lstore 6 /* bit */
        start local 6 // long bit
         8: .line 3249
            lload 2 /* mask */
            lload 6 /* bit */
            land
            lconst_0
            lcmp
            ifeq 10
         9: .line 3250
            iload 4 /* i */
            ireturn
        10: .line 3252
      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 3243
            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 3254
            lload 2 /* mask */
            lconst_1
            iload 1 /* newArity */
            lshl
            lconst_1
            lsub
            lcmp
            ifne 16
        14: .line 3255
            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 3256
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        16: .line 3259
      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 3260
            lload 4 /* zeroBit */
            invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
            istore 6 /* zeroPos */
        start local 6 // int zeroPos
        18: .line 3261
            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 3262
      StackMap locals: long int
      StackMap stack:
            iload 6 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 21
        20: .line 3263
            iconst_0
            ireturn
        21: .line 3265
      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 3268
      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 3269
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        24: goto 32
        25: .line 3270
      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 3271
            iload 4 /* arg */
            iload 1 /* newArity */
            if_icmplt 28
        27: .line 3272
            aload 0 /* reorder */
            arraylength
            ireturn
        28: .line 3274
      StackMap locals: int
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 30
        29: .line 3275
            iload 3 /* i */
            ireturn
        30: .line 3277
      StackMap locals:
      StackMap stack:
            aload 2 /* mask */
            iload 4 /* arg */
            invokevirtual java.util.BitSet.set:(I)V
        end local 4 // int arg
        31: .line 3269
            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 3279
            aload 2 /* mask */
            iconst_0
            invokevirtual java.util.BitSet.nextClearBit:(I)I
            istore 3 /* zeroPos */
        start local 3 // int zeroPos
        34: .line 3280
            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 3281
      StackMap locals:
      StackMap stack:
            iload 3 /* zeroPos */
            iload 1 /* newArity */
            if_icmpne 37
        36: .line 3282
            iconst_0
            ireturn
        37: .line 3284
      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 3289
            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 3290
            ldc "return types do not match"
         2: .line 3291
            aload 2 /* oldType */
            aload 1 /* newType */
         3: .line 3290
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 3292
      StackMap locals:
      StackMap stack:
            aload 0 /* reorder */
            arraylength
            aload 2 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmpne 21
         5: .line 3293
            aload 1 /* newType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* limit */
        start local 3 // int limit
         6: .line 3294
            iconst_0
            istore 4 /* bad */
        start local 4 // boolean bad
         7: .line 3295
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         8: goto 19
         9: .line 3296
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* reorder */
            iload 5 /* j */
            iaload
            istore 6 /* i */
        start local 6 // int i
        10: .line 3297
            iload 6 /* i */
            iflt 11
            iload 6 /* i */
            iload 3 /* limit */
            if_icmplt 12
        11: .line 3298
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 4 /* bad */
            goto 20
        12: .line 3300
      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 3301
            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 3302
            aload 7 /* src */
            aload 8 /* dst */
            if_acmpeq 18
        15: .line 3303
            ldc "parameter types do not match after reorder"
        16: .line 3304
            aload 2 /* oldType */
            aload 1 /* newType */
        17: .line 3303
            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 3295
      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 3306
      StackMap locals:
      StackMap stack:
            iload 4 /* bad */
            ifne 21
            iconst_1
            ireturn
        end local 4 // boolean bad
        end local 3 // int limit
        21: .line 3308
      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 3328
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 8
         1: .line 3329
            aload 0 /* type */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 3
         2: .line 3330
            ldc "void type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 3331
      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 3332
            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 3333
            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 3334
            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 3335
      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 3337
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            ifnonnull 10
         9: .line 3338
            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 3339
      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 3352
            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 3353
            aload 1 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         4: .line 3354
            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 3355
            aload 3 /* ident */
            ifnonnull 7
         6: .line 3356
            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 3358
      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 3359
            aload 3 /* ident */
            areturn
         9: .line 3361
      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 3362
      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 3382
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3383
            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 3387
            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 3407
            aload 0 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3408
            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 3413
            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 3414
            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 3415
            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 3419
            aload 0 /* btw */
            invokevirtual sun.invoke.util.Wrapper.ordinal:()I
            istore 2 /* pos */
        start local 2 // int pos
         1: .line 3420
            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 3421
            aload 3 /* zero */
            ifnonnull 4
         3: .line 3422
            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 3424
      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 3425
            aload 3 /* zero */
            areturn
         6: .line 3426
      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 3427
      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 3431
            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 3432
            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 3433
            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 3438
            aload 0 /* cache */
            iload 1 /* pos */
            aaload
            astore 3 /* prev */
        start local 3 // java.lang.invoke.MethodHandle prev
         1: .line 3439
            aload 3 /* prev */
            ifnull 2
            aload 3 /* prev */
            areturn
         2: .line 3440
      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 3478
            aload 2 /* values */
            arraylength
            istore 3 /* insCount */
        start local 3 // int insCount
         1: .line 3479
            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 3480
            iload 3 /* insCount */
            ifne 3
            aload 0 /* target */
            areturn
         3: .line 3481
      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 3482
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 14
         6: .line 3483
      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 3484
            aload 4 /* ptypes */
            iload 1 /* pos */
            iload 6 /* i */
            iadd
            aaload
            astore 8 /* ptype */
        start local 8 // java.lang.Class ptype
         8: .line 3485
            aload 8 /* ptype */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 11
         9: .line 3486
            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 3487
            goto 13
        11: .line 3488
      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 3489
            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 3482
      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 3492
            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 3497
            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 3499
            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 3500
            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 3501
      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 3502
      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 3503
      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 3504
      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 3505
      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 3510
            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 3511
            aload 3 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         2: .line 3512
            iload 4 /* outargs */
            iload 1 /* insCount */
            isub
            istore 5 /* inargs */
        start local 5 // int inargs
         3: .line 3513
            iload 5 /* inargs */
            ifge 5
         4: .line 3514
            ldc "too many values to insert"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 3515
      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 3516
      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 3517
      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 3564
            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 3568
            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 3573
            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 3574
            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 3575
            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 3576
            iload 4 /* dropped */
            ifne 4
            aload 0 /* target */
            areturn
         4: .line 3577
      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 3578
            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 3579
            iconst_1
            iload 1 /* pos */
            iadd
            istore 8 /* insertFormArg */
        start local 8 // int insertFormArg
         7: .line 3580
            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 3581
            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 3580
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 3583
            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 3584
            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 3588
            aload 2 /* valueTypes */
            invokeinterface java.util.List.size:()I
            istore 3 /* dropped */
        start local 3 // int dropped
         1: .line 3589
            iload 3 /* dropped */
            invokestatic java.lang.invoke.MethodType.checkSlotCount:(I)V
         2: .line 3590
            aload 0 /* oldType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* outargs */
        start local 4 // int outargs
         3: .line 3591
            iload 4 /* outargs */
            iload 3 /* dropped */
            iadd
            istore 5 /* inargs */
        start local 5 // int inargs
         4: .line 3592
            iload 1 /* pos */
            iflt 5
            iload 1 /* pos */
            iload 4 /* outargs */
            if_icmple 8
         5: .line 3593
      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 3594
            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 3593
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         8: .line 3596
      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 3647
            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 3653
            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 3654
            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 3655
            aload 5 /* oldTypes */
            invokeinterface java.util.List.size:()I
            istore 6 /* match */
        start local 6 // int match
         3: .line 3656
            iload 1 /* skip */
            ifeq 8
         4: .line 3657
            iload 1 /* skip */
            iflt 5
            iload 1 /* skip */
            iload 6 /* match */
            if_icmple 6
         5: .line 3658
      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 3660
      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 3661
            iload 6 /* match */
            iload 1 /* skip */
            isub
            istore 6 /* match */
         8: .line 3663
      StackMap locals:
      StackMap stack:
            aload 2 /* newTypes */
            astore 7 /* addTypes */
        start local 7 // java.util.List addTypes
         9: .line 3664
            aload 7 /* addTypes */
            invokeinterface java.util.List.size:()I
            istore 8 /* add */
        start local 8 // int add
        10: .line 3665
            iload 3 /* pos */
            ifeq 16
        11: .line 3666
            iload 3 /* pos */
            iflt 12
            iload 3 /* pos */
            iload 8 /* add */
            if_icmple 13
        12: .line 3667
      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 3669
      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 3670
            iload 8 /* add */
            iload 3 /* pos */
            isub
            istore 8 /* add */
        15: .line 3671
            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 3674
      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 3675
      StackMap locals:
      StackMap stack:
            iload 4 /* nullOnFailure */
            ifeq 19
        18: .line 3676
            aconst_null
            areturn
        19: .line 3678
      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 3680
      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 3681
            iload 8 /* add */
            iload 6 /* match */
            isub
            istore 8 /* add */
        22: .line 3682
            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 3685
      StackMap locals:
      StackMap stack:
            aload 0 /* target */
            astore 9 /* adapter */
        start local 9 // java.lang.invoke.MethodHandle adapter
        24: .line 3686
            iload 8 /* add */
            ifle 26
        25: .line 3687
            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 3690
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            iload 3 /* pos */
            ifle 28
        27: .line 3691
            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 3694
      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 3754
            aload 0 /* target */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 3755
            aload 2 /* newTypes */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 3756
            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=6, 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 3837
            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 3838
            aload 0 /* target */
            astore 3 /* adapter */
        start local 3 // java.lang.invoke.MethodHandle adapter
         2: .line 3841
            aload 2 /* filters */
            arraylength
            iconst_1
            isub
            istore 4 /* i */
        start local 4 // int i
         3: goto 8
         4: .line 3842
      StackMap locals: java.lang.invoke.MethodHandle int
      StackMap stack:
            aload 2 /* filters */
            iload 4 /* i */
            aaload
            astore 5 /* filter */
        start local 5 // java.lang.invoke.MethodHandle filter
         5: .line 3843
            aload 5 /* filter */
            ifnonnull 6
            goto 7
         6: .line 3844
      StackMap locals: java.lang.invoke.MethodHandle
      StackMap stack:
            aload 3 /* adapter */
            iload 1 /* pos */
            iload 4 /* i */
            iadd
            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
         7: .line 3841
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ -1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            ifge 4
        end local 4 // int i
         9: .line 3846
            aload 3 /* adapter */
            areturn
        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   10     0   target  Ljava/lang/invoke/MethodHandle;
            0   10     1      pos  I
            0   10     2  filters  [Ljava/lang/invoke/MethodHandle;
            2   10     3  adapter  Ljava/lang/invoke/MethodHandle;
            3    9     4        i  I
            5    7     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 3851
            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 3852
            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 3853
            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 3854
            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 3855
            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 3856
            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 3857
            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 3858
            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 3859
            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 3863
            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 3864
            aload 3 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* maxPos */
        start local 4 // int maxPos
         2: .line 3865
            iload 1 /* pos */
            aload 2 /* filters */
            arraylength
            iadd
            iload 4 /* maxPos */
            if_icmple 4
         3: .line 3866
            ldc "too many filters"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 3867
      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 3870
            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 3871
            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 3872
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            iconst_1
            if_icmpne 4
         3: .line 3873
            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 3874
      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 3875
      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 3998
            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 3999
            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 4000
            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 4002
            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 4003
            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 4004
            aload 6 /* lform */
            ifnull 7
         6: .line 4005
            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 4008
      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 4009
            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 4013
            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 4014
            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 4015
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 5 /* rtype */
        start local 5 // java.lang.Class rtype
         3: .line 4016
            aload 4 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 6 /* filterArgs */
        start local 6 // java.util.List filterArgs
         4: .line 4017
            aload 5 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 6
         5: .line 4018
            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 4020
      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 4021
            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 4023
      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 4092
            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 4093
            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 4094
            aload 2 /* targetType */
            aload 3 /* filterType */
            invokestatic java.lang.invoke.MethodHandles.filterReturnValueChecks:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
         3: .line 4095
            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 4096
            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 4097
            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 4098
            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 4099
            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 4100
            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 4104
            aload 0 /* targetType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 2 /* rtype */
        start local 2 // java.lang.Class rtype
         1: .line 4105
            aload 1 /* filterType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* filterValues */
        start local 3 // int filterValues
         2: .line 4106
            iload 3 /* filterValues */
            ifne 4
         3: .line 4107
            aload 2 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            goto 5
         4: .line 4108
      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 4109
      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 4110
      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 4201
            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 4275
            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 4276
            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 4277
            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 4278
            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 4279
            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 4280
            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 4281
            aload 3 /* targetType */
            astore 9 /* newType */
        start local 9 // java.lang.invoke.MethodType newType
         9: .line 4282
            iload 7 /* dropResult */
            ifne 11
        10: .line 4283
            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 4285
      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 4286
            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 4297
            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 4298
            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 4299
            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 4300
            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 4301
            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 4302
            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 4303
            aload 4 /* targetType */
            astore 10 /* newType */
        start local 10 // java.lang.invoke.MethodType newType
         9: .line 4304
            iload 8 /* dropResult */
            ifne 11
        10: .line 4305
            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 4307
      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 4308
            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 4312
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 3 /* foldArgs */
        start local 3 // int foldArgs
         1: .line 4313
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* rtype */
        start local 4 // java.lang.Class rtype
         2: .line 4314
            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 4315
            iload 0 /* foldPos */
            iload 5 /* foldVals */
            iadd
            istore 6 /* afterInsertPos */
        start local 6 // int afterInsertPos
         6: .line 4316
            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 4317
            iload 7 /* ok */
            ifeq 17
        10: .line 4318
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        11: goto 16
        12: .line 4319
      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 4320
            iconst_0
            istore 7 /* ok */
        14: .line 4321
            goto 17
        15: .line 4318
      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 4325
      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 4326
            iconst_0
            istore 7 /* ok */
        19: .line 4327
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifne 21
        20: .line 4328
            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 4329
      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 4333
            aload 2 /* combinerType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            istore 4 /* foldArgs */
        start local 4 // int foldArgs
         1: .line 4334
            aload 3 /* argPos */
            arraylength
            iload 4 /* foldArgs */
            if_icmpeq 3
         2: .line 4335
            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 4337
      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 4338
            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 4339
            iconst_1
            istore 7 /* ok */
        start local 7 // boolean ok
         8: .line 4340
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         9: goto 19
        10: .line 4341
      StackMap locals: int int int
      StackMap stack:
            aload 3 /* argPos */
            iload 8 /* i */
            iaload
            istore 9 /* arg */
        start local 9 // int arg
        11: .line 4342
            iload 9 /* arg */
            iflt 12
            iload 9 /* arg */
            aload 1 /* targetType */
            invokevirtual java.lang.invoke.MethodType.parameterCount:()I
            if_icmple 13
        12: .line 4343
      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 4345
      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 4346
            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 4347
            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 4348
            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 4346
            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 4340
      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 4351
            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 4352
            iconst_0
            istore 7 /* ok */
        22: .line 4354
      StackMap locals:
      StackMap stack:
            iload 7 /* ok */
            ifne 24
        23: .line 4355
            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 4356
      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 4401
            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 4402
            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 4403
            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 4404
            aload 4 /* ttype */
            aload 5 /* ftype */
            invokevirtual java.lang.invoke.MethodType.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 4405
            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 4406
      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 4407
            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 4408
      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 4409
            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 4410
            aload 0 /* test */
            ifnonnull 11
        10: .line 4411
            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 4413
      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 4417
            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 4474
            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 4475
            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 4476
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 4
         3: .line 4477
            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 4478
      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 4479
            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 4480
      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 4481
      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 4482
            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 4483
      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 4484
            aload 2 /* handler */
            ifnonnull 12
        11: .line 4485
            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 4487
      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 4504
            ldc Ljava/lang/Throwable;
            aload 1 /* exType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 4505
            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 4506
      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 4851
            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 4892
            aload 0 /* clauses */
            ifnull 1
            aload 0 /* clauses */
            arraylength
            ifne 2
         1: .line 4893
      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 4895
      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 4896
            ldc "null clauses are not allowed"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 4898
      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 4899
            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 4901
      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 4904
            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 4905
            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 4906
            aload 2 /* st */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
         3: .line 4905
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         4: .line 4908
      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 4911
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 2 /* empty */
        start local 2 // java.util.List empty
         1: .line 4912
            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 4914
            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 4915
            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 4916
            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 4917
            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 4912
            astore 3 /* longest */
        start local 3 // java.util.List longest
         7: .line 4918
            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 4922
            invokestatic java.util.List.of:()Ljava/util/List;
            astore 1 /* empty */
        start local 1 // java.util.List empty
         1: .line 4923
            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 4927
            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 4928
            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 4929
            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 4933
            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 4934
            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 4935
            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 4936
            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 4935
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4938
      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 4941
            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 4942
            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 4943
            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 4944
            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 4943
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4947
      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 4948
            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 4950
      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 4951
            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 4952
            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 4954
      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 4957
            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 4958
            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 4959
            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 4960
            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 4959
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 4962
      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 4965
            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 4969
            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 4965
            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 4973
            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 5083
            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 5084
            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 5085
            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 5086
            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 5087
            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 5187
            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 5188
            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 5189
            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 5190
            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 5194
            aload 1 /* pred */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5195
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 5196
            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 5197
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         4: .line 5198
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* innerList */
        start local 5 // java.util.List innerList
         5: .line 5199
            aload 5 /* innerList */
            astore 6 /* outerList */
        start local 6 // java.util.List outerList
         6: .line 5200
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         7: .line 5202
            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 5204
      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 5205
            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 5207
      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 5209
      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 5210
            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 5211
            aload 7 /* predType */
            iconst_0
            aload 5 /* innerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 15
        14: .line 5212
      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 5214
      StackMap locals:
      StackMap stack:
            aload 0 /* init */
            ifnull 20
        16: .line 5215
            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 5216
            aload 8 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 19
        18: .line 5217
            aload 8 /* initType */
            iconst_0
            aload 6 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 20
        19: .line 5218
      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 5221
      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 5371
            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 5495
            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 5496
            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 5497
            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 5498
            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 5499
            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 5500
            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 5501
            aconst_null
            astore 8 /* retv */
        start local 8 // java.lang.invoke.MethodHandle retv
         7: .line 5502
            aload 5 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 11
         8: .line 5503
            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 5504
            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 5505
            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 5507
      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 5509
            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 5510
            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 5511
            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 5512
            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 5516
            aload 0 /* start */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5517
            aload 1 /* end */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 5518
            aload 3 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 5519
            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 5520
            aload 4 /* counterType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 7
         5: .line 5521
            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 5522
            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 5523
      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 5524
            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 5525
            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 5527
      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 5528
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 6 /* returnType */
        start local 6 // java.lang.Class returnType
        12: .line 5529
            aload 5 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 7 /* innerList */
        start local 7 // java.util.List innerList
        13: .line 5531
            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 5532
            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 5534
      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 5535
            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 5536
      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 5538
      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 5539
            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 5541
      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 5542
            aload 9 /* outerList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 26
        24: .line 5544
            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 5545
            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 5547
      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 5548
            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 5549
            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 5551
      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 5552
            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 5553
            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 5555
      StackMap locals:
      StackMap stack:
            aload 2 /* init */
            ifnull 37
        33: .line 5556
            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 5557
            aload 11 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 6 /* returnType */
            if_acmpne 36
        35: .line 5558
            aload 11 /* initType */
            iconst_0
            aload 9 /* outerList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 5559
      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 5562
      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 5706
            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 5707
            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 5708
            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 5709
            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 5714
            aload 0 /* iterator */
            ifnonnull 8
         5: .line 5716
            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 5717
            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 5718
            goto 10
        end local 9 // java.lang.invoke.MethodType iteratorType
        end local 7 // java.lang.invoke.MethodHandle startIter
         8: .line 5720
      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 5721
            aload 0 /* iterator */
            astore 7 /* startIter */
        start local 7 // java.lang.invoke.MethodHandle startIter
        10: .line 5723
      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 5724
            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 5728
            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 5729
            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 5730
            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 5731
            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 5735
      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 5736
            aload 4 /* returnType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 24
        22: .line 5738
            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 5740
            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 5744
      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 5745
            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 5746
            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 5750
            aload 2 /* body */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 5751
            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 5752
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 4 /* returnType */
        start local 4 // java.lang.Class returnType
         3: .line 5753
            aload 3 /* bodyType */
            invokevirtual java.lang.invoke.MethodType.parameterList:()Ljava/util/List;
            astore 5 /* internalParamList */
        start local 5 // java.util.List internalParamList
         4: .line 5755
            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 5756
            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 5758
      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 5759
            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 5760
      StackMap locals:
      StackMap stack:
            aload 5 /* internalParamList */
            invokeinterface java.util.List.size:()I
            iload 6 /* vsize */
            if_icmpgt 13
        11: .line 5762
            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 5763
            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 5765
      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 5766
            aconst_null
            astore 8 /* iterableType */
        start local 8 // java.lang.Class iterableType
        15: .line 5767
            aload 0 /* iterator */
            ifnull 24
        16: .line 5770
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 18
        17: .line 5771
            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 5773
      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 5774
            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 5775
            ldc "iteratedLoop first argument must have Iterator return type"
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        21: .line 5777
      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 5778
            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 5779
            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 5782
      StackMap locals:
      StackMap stack:
            aload 7 /* externalParamList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 28
        25: .line 5786
            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 5787
            ldc Ljava/lang/Iterable;
            astore 8 /* iterableType */
        27: .line 5788
            goto 32
        28: .line 5792
      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 5793
            ldc Ljava/lang/Iterable;
            aload 8 /* iterableType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 32
        30: .line 5795
            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 5794
            invokestatic java.lang.invoke.MethodHandleStatics.newIllegalArgumentException:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        32: .line 5799
      StackMap locals:
      StackMap stack:
            aload 1 /* init */
            ifnull 37
        33: .line 5800
            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 5801
            aload 9 /* initType */
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            aload 4 /* returnType */
            if_acmpne 36
        35: .line 5802
            aload 9 /* initType */
            iconst_0
            aload 7 /* externalParamList */
            invokevirtual java.lang.invoke.MethodType.effectivelyIdenticalParameters:(ILjava/util/List;)Z
            ifne 37
        36: .line 5803
      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 5806
      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 5811
            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 5812
            iload 3 /* arity */
            newarray 10
            astore 4 /* order */
        start local 4 // int[] order
         2: .line 5813
            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 5814
            aload 4 /* order */
            iload 1 /* i */
            iload 2 /* j */
            iastore
            aload 4 /* order */
            iload 2 /* j */
            iload 1 /* i */
            iastore
         7: .line 5815
            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 5816
            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 5817
            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 5818
            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 5911
            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 5912
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodType.returnType:()Ljava/lang/Class;
            astore 3 /* rtype */
        start local 3 // java.lang.Class rtype
         2: .line 5914
            aload 0 /* target */
            aload 1 /* cleanup */
            invokestatic java.lang.invoke.MethodHandles.tryFinallyChecks:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
         3: .line 5919
            aload 1 /* cleanup */
            aload 3 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 4
            iconst_1
            goto 5
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.util.List java.lang.Class
      StackMap stack: java.lang.invoke.MethodHandle
         4: iconst_2
      StackMap locals: java.lang.invoke.MethodHandle java.lang.invoke.MethodHandle java.util.List java.lang.Class
      StackMap stack: java.lang.invoke.MethodHandle int
         5: aload 2 /* targetParamTypes */
            iconst_0
            invokestatic java.lang.invoke.MethodHandles.dropArgumentsToMatch:(Ljava/lang/invoke/MethodHandle;ILjava/util/List;I)Ljava/lang/invoke/MethodHandle;
            astore 1 /* cleanup */
         6: .line 5923
            aload 1 /* cleanup */
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            iconst_0
            ldc Ljava/lang/Throwable;
            invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            astore 1 /* cleanup */
         7: .line 5926
            aload 0 /* target */
            invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
            aload 1 /* cleanup */
            invokevirtual java.lang.invoke.MethodHandle.asFixedArity:()Ljava/lang/invoke/MethodHandle;
            aload 3 /* rtype */
            aload 2 /* targetParamTypes */
            invokestatic java.lang.invoke.MethodHandleImpl.makeTryFinally:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;Ljava/util/List;)Ljava/lang/invoke/MethodHandle;
            areturn
        end local 3 // java.lang.Class rtype
        end local 2 // java.util.List targetParamTypes
        end local 1 // java.lang.invoke.MethodHandle cleanup
        end local 0 // java.lang.invoke.MethodHandle target
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0            target  Ljava/lang/invoke/MethodHandle;
            0    8     1           cleanup  Ljava/lang/invoke/MethodHandle;
            1    8     2  targetParamTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
            2    8     3             rtype  Ljava/lang/Class<*>;
    MethodParameters:
         Name  Flags
      target   
      cleanup  

  private static void tryFinallyChecks(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.invoke.MethodHandle target
        start local 1 // java.lang.invoke.MethodHandle cleanup
         0: .line 5930
            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 5931
            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 5932
            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 5934
      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 5935
            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 5936
            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 5938
      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 5939
            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 5943
      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 5944
            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 5945
            ldc "cleanup parameters after (Throwable,result) and target parameter list prefix"
        13: .line 5946
            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 5945
            invokestatic java.lang.invoke.MethodHandles.misMatchedTypes:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        15: .line 5948
      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 4898
            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 4915
            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 4917
            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 4923
            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 4934
            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 4942
            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 4951
            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 4958
            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 4966
            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 4967
            aload 0
            invokeinterface java.util.List.size:()I
            istore 3 /* tpsize */
        start local 3 // int tpsize
         2: .line 4968
            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