final class java.lang.reflect.Proxy$ProxyClassFactory implements java.util.function.BiFunction<java.lang.ClassLoader, java.lang.Class<?>[], java.lang.Class<?>>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: java.lang.reflect.Proxy$ProxyClassFactory
  super_class: java.lang.Object
{
  private static final java.lang.String proxyClassNamePrefix;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "$Proxy"

  private static final java.util.concurrent.atomic.AtomicLong nextUniqueNumber;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 564
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putstatic java.lang.reflect.Proxy$ProxyClassFactory.nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong;
            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.reflect.Proxy$ProxyClassFactory this
         0: .line 557
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // java.lang.reflect.Proxy$ProxyClassFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/reflect/Proxy$ProxyClassFactory;

  public java.lang.Class<?> apply(java.lang.ClassLoader, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=14, args_size=3
        start local 0 // java.lang.reflect.Proxy$ProxyClassFactory this
        start local 1 // java.lang.ClassLoader loader
        start local 2 // java.lang.Class[] interfaces
         0: .line 569
            new java.util.IdentityHashMap
            dup
            aload 2 /* interfaces */
            arraylength
            invokespecial java.util.IdentityHashMap.<init>:(I)V
            astore 3 /* interfaceSet */
        start local 3 // java.util.Map interfaceSet
         1: .line 570
            aload 2 /* interfaces */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 20
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map top int int java.lang.Class[]
      StackMap stack:
         2: aload 7
            iload 5
            aaload
            astore 4 /* intf */
        start local 4 // java.lang.Class intf
         3: .line 575
            aconst_null
            astore 8 /* interfaceClass */
        start local 8 // java.lang.Class interfaceClass
         4: .line 577
            aload 4 /* intf */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            iconst_0
            aload 1 /* loader */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 8 /* interfaceClass */
         5: .line 578
            goto 7
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.Class int int java.lang.Class[] java.lang.Class
      StackMap stack: java.lang.ClassNotFoundException
         6: pop
         7: .line 580
      StackMap locals:
      StackMap stack:
            aload 8 /* interfaceClass */
            aload 4 /* intf */
            if_acmpeq 11
         8: .line 581
            new java.lang.IllegalArgumentException
            dup
         9: .line 582
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* intf */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is not visible from class loader"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 581
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 588
      StackMap locals:
      StackMap stack:
            aload 8 /* interfaceClass */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 15
        12: .line 589
            new java.lang.IllegalArgumentException
            dup
        13: .line 590
            new java.lang.StringBuilder
            dup
            aload 8 /* interfaceClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not an interface"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 589
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 595
      StackMap locals:
      StackMap stack:
            aload 3 /* interfaceSet */
            aload 8 /* interfaceClass */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 19
        16: .line 596
            new java.lang.IllegalArgumentException
            dup
        17: .line 597
            new java.lang.StringBuilder
            dup
            ldc "repeated interface: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* interfaceClass */
            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;
        18: .line 596
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // java.lang.Class interfaceClass
        end local 4 // java.lang.Class intf
        19: .line 570
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map top int int java.lang.Class[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        20: iload 5
            iload 6
            if_icmplt 2
        21: .line 601
            aconst_null
            astore 4 /* proxyPkg */
        start local 4 // java.lang.String proxyPkg
        22: .line 602
            bipush 17
            istore 5 /* accessFlags */
        start local 5 // int accessFlags
        23: .line 609
            aload 2 /* interfaces */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 41
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.String int top int int java.lang.Class[]
      StackMap stack:
        24: aload 9
            iload 7
            aaload
            astore 6 /* intf */
        start local 6 // java.lang.Class intf
        25: .line 610
            aload 6 /* intf */
            invokevirtual java.lang.Class.getModifiers:()I
            istore 10 /* flags */
        start local 10 // int flags
        26: .line 611
            iload 10 /* flags */
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifne 40
        27: .line 612
            bipush 16
            istore 5 /* accessFlags */
        28: .line 613
            aload 6 /* intf */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 11 /* name */
        start local 11 // java.lang.String name
        29: .line 614
            aload 11 /* name */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 12 /* n */
        start local 12 // int n
        30: .line 615
            iload 12 /* n */
            iconst_m1
            if_icmpne 31
            ldc ""
            goto 32
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.String int java.lang.Class int int java.lang.Class[] int java.lang.String int
      StackMap stack:
        31: aload 11 /* name */
            iconst_0
            iload 12 /* n */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        32: astore 13 /* pkg */
        start local 13 // java.lang.String pkg
        33: .line 616
            aload 4 /* proxyPkg */
            ifnonnull 36
        34: .line 617
            aload 13 /* pkg */
            astore 4 /* proxyPkg */
        35: .line 618
            goto 40
      StackMap locals: java.lang.String
      StackMap stack:
        36: aload 13 /* pkg */
            aload 4 /* proxyPkg */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 40
        37: .line 619
            new java.lang.IllegalArgumentException
            dup
        38: .line 620
            ldc "non-public interfaces from different packages"
        39: .line 619
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 13 // java.lang.String pkg
        end local 12 // int n
        end local 11 // java.lang.String name
        end local 10 // int flags
        end local 6 // java.lang.Class intf
        40: .line 609
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.String int top int int java.lang.Class[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        41: iload 7
            iload 8
            if_icmplt 24
        42: .line 625
            aload 4 /* proxyPkg */
            ifnonnull 44
        43: .line 627
            ldc "com.sun.proxy."
            astore 4 /* proxyPkg */
        44: .line 633
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.String int
      StackMap stack:
            getstatic java.lang.reflect.Proxy$ProxyClassFactory.nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.getAndIncrement:()J
            lstore 6 /* num */
        start local 6 // long num
        45: .line 634
            new java.lang.StringBuilder
            dup
            aload 4 /* proxyPkg */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "$Proxy"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 6 /* num */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* proxyName */
        start local 8 // java.lang.String proxyName
        46: .line 640
            aload 8 /* proxyName */
            aload 2 /* interfaces */
            iload 5 /* accessFlags */
        47: .line 639
            invokestatic sun.misc.ProxyGenerator.generateProxyClass:(Ljava/lang/String;[Ljava/lang/Class;I)[B
            astore 9 /* proxyClassFile */
        start local 9 // byte[] proxyClassFile
        48: .line 642
            aload 1 /* loader */
            aload 8 /* proxyName */
        49: .line 643
            aload 9 /* proxyClassFile */
            iconst_0
            aload 9 /* proxyClassFile */
            arraylength
        50: .line 642
            invokestatic java.lang.reflect.Proxy.defineClass0:(Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
        51: areturn
        52: .line 644
      StackMap locals: java.lang.reflect.Proxy$ProxyClassFactory java.lang.ClassLoader java.lang.Class[] java.util.Map java.lang.String int long java.lang.String byte[]
      StackMap stack: java.lang.ClassFormatError
            astore 10 /* e */
        start local 10 // java.lang.ClassFormatError e
        53: .line 652
            new java.lang.IllegalArgumentException
            dup
            aload 10 /* e */
            invokevirtual java.lang.ClassFormatError.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 10 // java.lang.ClassFormatError e
        end local 9 // byte[] proxyClassFile
        end local 8 // java.lang.String proxyName
        end local 6 // long num
        end local 5 // int accessFlags
        end local 4 // java.lang.String proxyPkg
        end local 3 // java.util.Map interfaceSet
        end local 2 // java.lang.Class[] interfaces
        end local 1 // java.lang.ClassLoader loader
        end local 0 // java.lang.reflect.Proxy$ProxyClassFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   54     0            this  Ljava/lang/reflect/Proxy$ProxyClassFactory;
            0   54     1          loader  Ljava/lang/ClassLoader;
            0   54     2      interfaces  [Ljava/lang/Class;
            1   54     3    interfaceSet  Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Boolean;>;
            3   19     4            intf  Ljava/lang/Class<*>;
            4   19     8  interfaceClass  Ljava/lang/Class<*>;
           22   54     4        proxyPkg  Ljava/lang/String;
           23   54     5     accessFlags  I
           25   40     6            intf  Ljava/lang/Class<*>;
           26   40    10           flags  I
           29   40    11            name  Ljava/lang/String;
           30   40    12               n  I
           33   40    13             pkg  Ljava/lang/String;
           45   54     6             num  J
           46   54     8       proxyName  Ljava/lang/String;
           48   54     9  proxyClassFile  [B
           53   54    10               e  Ljava/lang/ClassFormatError;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.ClassNotFoundException
          48    51      52  Class java.lang.ClassFormatError
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    MethodParameters:
            Name  Flags
      loader      
      interfaces  

  public java.lang.Object apply(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.ClassLoader
            aload 2
            checkcast java.lang.Class[]
            invokevirtual java.lang.reflect.Proxy$ProxyClassFactory.apply:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/util/function/BiFunction<Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;>;
SourceFile: "Proxy.java"
NestHost: java.lang.reflect.Proxy
InnerClasses:
  private final ProxyClassFactory = java.lang.reflect.Proxy$ProxyClassFactory of java.lang.reflect.Proxy