public class java.lang.reflect.Proxy implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.lang.reflect.Proxy
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -2222568056686623797

  private static final java.lang.Class<?>[] constructorParams;
    descriptor: [Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: [Ljava/lang/Class<*>;

  private static final jdk.internal.loader.ClassLoaderValue<java.lang.reflect.Constructor<?>> proxyCache;
    descriptor: Ljdk/internal/loader/ClassLoaderValue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljdk/internal/loader/ClassLoaderValue<Ljava/lang/reflect/Constructor<*>;>;

  protected java.lang.reflect.InvocationHandler h;
    descriptor: Ljava/lang/reflect/InvocationHandler;
    flags: (0x0004) ACC_PROTECTED

  private static final java.lang.Class<?>[] EMPTY_CLASS_ARRAY;
    descriptor: [Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: [Ljava/lang/Class<*>;

  private static final java.lang.String PROXY_PACKAGE_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.proxy"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 290
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/reflect/InvocationHandler;
            aastore
         1: .line 289
            putstatic java.lang.reflect.Proxy.constructorParams:[Ljava/lang/Class;
         2: .line 297
            new jdk.internal.loader.ClassLoaderValue
            dup
            invokespecial jdk.internal.loader.ClassLoaderValue.<init>:()V
         3: .line 296
            putstatic java.lang.reflect.Proxy.proxyCache:Ljdk/internal/loader/ClassLoaderValue;
         4: .line 1121
            iconst_0
            anewarray java.lang.Class
            putstatic java.lang.reflect.Proxy.EMPTY_CLASS_ARRAY:[Ljava/lang/Class;
         5: .line 1122
            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 this
         0: .line 308
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 309
            return
        end local 0 // java.lang.reflect.Proxy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/lang/reflect/Proxy;

  protected void <init>(java.lang.reflect.InvocationHandler);
    descriptor: (Ljava/lang/reflect/InvocationHandler;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.reflect.Proxy this
        start local 1 // java.lang.reflect.InvocationHandler h
         0: .line 321
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 322
            aload 1 /* h */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 323
            aload 0 /* this */
            aload 1 /* h */
            putfield java.lang.reflect.Proxy.h:Ljava/lang/reflect/InvocationHandler;
         3: .line 324
            return
        end local 1 // java.lang.reflect.InvocationHandler h
        end local 0 // java.lang.reflect.Proxy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/lang/reflect/Proxy;
            0    4     1     h  Ljava/lang/reflect/InvocationHandler;
    MethodParameters:
      Name  Flags
      h     

  public static java.lang.Class<?> getProxyClass(java.lang.ClassLoader, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.lang.Class[] interfaces
         0: .line 380
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnonnull 2
         1: .line 381
            aconst_null
            goto 3
         2: .line 382
      StackMap locals:
      StackMap stack:
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
         3: .line 380
      StackMap locals:
      StackMap stack: java.lang.Class
            astore 2 /* caller */
        start local 2 // java.lang.Class caller
         4: .line 384
            aload 2 /* caller */
            aload 0 /* loader */
            aload 1 /* interfaces */
            invokestatic java.lang.reflect.Proxy.getProxyConstructor:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
         5: .line 385
            invokevirtual java.lang.reflect.Constructor.getDeclaringClass:()Ljava/lang/Class;
         6: .line 384
            areturn
        end local 2 // java.lang.Class caller
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0      loader  Ljava/lang/ClassLoader;
            0    7     1  interfaces  [Ljava/lang/Class;
            4    7     2      caller  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
      jdk.internal.reflect.CallerSensitive()
    MethodParameters:
            Name  Flags
      loader      
      interfaces  

  private static java.lang.reflect.Constructor<?> getProxyConstructor(java.lang.Class<?>, java.lang.ClassLoader, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // java.lang.Class caller
        start local 1 // java.lang.ClassLoader loader
        start local 2 // java.lang.Class[] interfaces
         0: .line 408
            aload 2 /* interfaces */
            arraylength
            iconst_1
            if_icmpne 8
         1: .line 409
            aload 2 /* interfaces */
            iconst_0
            aaload
            astore 3 /* intf */
        start local 3 // java.lang.Class intf
         2: .line 410
            aload 0 /* caller */
            ifnull 4
         3: .line 411
            aload 0 /* caller */
            aload 1 /* loader */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 3 /* intf */
            aastore
            invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
         4: .line 413
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic java.lang.reflect.Proxy.proxyCache:Ljdk/internal/loader/ClassLoaderValue;
            aload 3 /* intf */
            invokevirtual jdk.internal.loader.ClassLoaderValue.sub:(Ljava/lang/Object;)Ljdk/internal/loader/AbstractClassLoaderValue$Sub;
         5: .line 414
            aload 1 /* loader */
         6: .line 415
            invokedynamic apply()Ljava/util/function/BiFunction;
              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/reflect/Proxy.lambda$0(Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor; (6)
                  (Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor;
         7: .line 413
            invokevirtual jdk.internal.loader.AbstractClassLoaderValue$Sub.computeIfAbsent:(Ljava/lang/ClassLoader;Ljava/util/function/BiFunction;)Ljava/lang/Object;
            checkcast java.lang.reflect.Constructor
            areturn
        end local 3 // java.lang.Class intf
         8: .line 419
      StackMap locals:
      StackMap stack:
            aload 2 /* interfaces */
            invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 3 /* intfsArray */
        start local 3 // java.lang.Class[] intfsArray
         9: .line 420
            aload 0 /* caller */
            ifnull 11
        10: .line 421
            aload 0 /* caller */
            aload 1 /* loader */
            aload 3 /* intfsArray */
            invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
        11: .line 423
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 3 /* intfsArray */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 4 /* intfs */
        start local 4 // java.util.List intfs
        12: .line 424
            getstatic java.lang.reflect.Proxy.proxyCache:Ljdk/internal/loader/ClassLoaderValue;
            aload 4 /* intfs */
            invokevirtual jdk.internal.loader.ClassLoaderValue.sub:(Ljava/lang/Object;)Ljdk/internal/loader/AbstractClassLoaderValue$Sub;
        13: .line 425
            aload 1 /* loader */
        14: .line 426
            invokedynamic apply()Ljava/util/function/BiFunction;
              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/reflect/Proxy.lambda$1(Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor; (6)
                  (Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor;
        15: .line 424
            invokevirtual jdk.internal.loader.AbstractClassLoaderValue$Sub.computeIfAbsent:(Ljava/lang/ClassLoader;Ljava/util/function/BiFunction;)Ljava/lang/Object;
            checkcast java.lang.reflect.Constructor
            areturn
        end local 4 // java.util.List intfs
        end local 3 // java.lang.Class[] intfsArray
        end local 2 // java.lang.Class[] interfaces
        end local 1 // java.lang.ClassLoader loader
        end local 0 // java.lang.Class caller
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0      caller  Ljava/lang/Class<*>;
            0   16     1      loader  Ljava/lang/ClassLoader;
            0   16     2  interfaces  [Ljava/lang/Class;
            2    8     3        intf  Ljava/lang/Class<*>;
            9   16     3  intfsArray  [Ljava/lang/Class;
           12   16     4       intfs  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<*>;
    MethodParameters:
            Name  Flags
      caller      
      loader      
      interfaces  

  private static void checkProxyAccess(java.lang.Class<?>, java.lang.ClassLoader, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.lang.Class caller
        start local 1 // java.lang.ClassLoader loader
        start local 2 // java.lang.Class[] interfaces
         0: .line 453
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         1: .line 454
            aload 3 /* sm */
            ifnull 6
         2: .line 455
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* ccl */
        start local 4 // java.lang.ClassLoader ccl
         3: .line 456
            aload 1 /* loader */
            ifnonnull 5
            aload 4 /* ccl */
            ifnull 5
         4: .line 457
            aload 3 /* sm */
            getstatic sun.security.util.SecurityConstants.GET_CLASSLOADER_PERMISSION:Ljava/lang/RuntimePermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 459
      StackMap locals: java.lang.SecurityManager java.lang.ClassLoader
      StackMap stack:
            aload 4 /* ccl */
            aload 2 /* interfaces */
            invokestatic sun.reflect.misc.ReflectUtil.checkProxyPackageAccess:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
        end local 4 // java.lang.ClassLoader ccl
         6: .line 461
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.SecurityManager sm
        end local 2 // java.lang.Class[] interfaces
        end local 1 // java.lang.ClassLoader loader
        end local 0 // java.lang.Class caller
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0      caller  Ljava/lang/Class<*>;
            0    7     1      loader  Ljava/lang/ClassLoader;
            0    7     2  interfaces  [Ljava/lang/Class;
            1    7     3          sm  Ljava/lang/SecurityManager;
            3    6     4         ccl  Ljava/lang/ClassLoader;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)V
    MethodParameters:
            Name  Flags
      caller      
      loader      
      interfaces  

  public static  newProxyInstance(java.lang.ClassLoader, java.lang.Class<?>[], java.lang.reflect.InvocationHandler);
    descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.lang.Class[] interfaces
        start local 2 // java.lang.reflect.InvocationHandler h
         0: .line 997
            aload 2 /* h */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 999
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnonnull 3
         2: .line 1000
            aconst_null
            goto 4
         3: .line 1001
      StackMap locals:
      StackMap stack:
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
         4: .line 999
      StackMap locals:
      StackMap stack: java.lang.Class
            astore 3 /* caller */
        start local 3 // java.lang.Class caller
         5: .line 1006
            aload 3 /* caller */
            aload 0 /* loader */
            aload 1 /* interfaces */
            invokestatic java.lang.reflect.Proxy.getProxyConstructor:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 4 /* cons */
        start local 4 // java.lang.reflect.Constructor cons
         6: .line 1008
            aload 3 /* caller */
            aload 4 /* cons */
            aload 2 /* h */
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.reflect.Constructor cons
        end local 3 // java.lang.Class caller
        end local 2 // java.lang.reflect.InvocationHandler h
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0      loader  Ljava/lang/ClassLoader;
            0    7     1  interfaces  [Ljava/lang/Class;
            0    7     2           h  Ljava/lang/reflect/InvocationHandler;
            5    7     3      caller  Ljava/lang/Class<*>;
            6    7     4        cons  Ljava/lang/reflect/Constructor<*>;
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.internal.reflect.CallerSensitive()
    MethodParameters:
            Name  Flags
      loader      
      interfaces  
      h           

  private static  newProxyInstance(java.lang.Class<?>, java.lang.reflect.Constructor<?>, java.lang.reflect.InvocationHandler);
    descriptor: (Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.lang.Class caller
        start local 1 // java.lang.reflect.Constructor cons
        start local 2 // java.lang.reflect.InvocationHandler h
         0: .line 1018
            aload 0 /* caller */
            ifnull 2
         1: .line 1019
            aload 0 /* caller */
            aload 1 /* cons */
            invokevirtual java.lang.reflect.Constructor.getDeclaringClass:()Ljava/lang/Class;
            invokestatic java.lang.reflect.Proxy.checkNewProxyPermission:(Ljava/lang/Class;Ljava/lang/Class;)V
         2: .line 1022
      StackMap locals:
      StackMap stack:
            aload 1 /* cons */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* h */
            aastore
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
         3: areturn
         4: .line 1023
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
            astore 3 /* e */
        start local 3 // java.lang.ReflectiveOperationException e
         5: .line 1024
            new java.lang.InternalError
            dup
            aload 3 /* e */
            invokevirtual java.lang.ReflectiveOperationException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.ReflectiveOperationException e
         6: .line 1025
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 3 /* e */
        start local 3 // java.lang.reflect.InvocationTargetException e
         7: .line 1026
            aload 3 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
            astore 4 /* t */
        start local 4 // java.lang.Throwable t
         8: .line 1027
            aload 4 /* t */
            instanceof java.lang.RuntimeException
            ifeq 10
         9: .line 1028
            aload 4 /* t */
            checkcast java.lang.RuntimeException
            athrow
        10: .line 1030
      StackMap locals: java.lang.reflect.InvocationTargetException java.lang.Throwable
      StackMap stack:
            new java.lang.InternalError
            dup
            aload 4 /* t */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            aload 4 /* t */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Throwable t
        end local 3 // java.lang.reflect.InvocationTargetException e
        end local 2 // java.lang.reflect.InvocationHandler h
        end local 1 // java.lang.reflect.Constructor cons
        end local 0 // java.lang.Class caller
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0  caller  Ljava/lang/Class<*>;
            0   11     1    cons  Ljava/lang/reflect/Constructor<*>;
            0   11     2       h  Ljava/lang/reflect/InvocationHandler;
            5    6     3       e  Ljava/lang/ReflectiveOperationException;
            7   11     3       e  Ljava/lang/reflect/InvocationTargetException;
            8   11     4       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.IllegalAccessException
           0     3       4  Class java.lang.InstantiationException
           0     3       6  Class java.lang.reflect.InvocationTargetException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/reflect/Constructor<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      caller  
      cons    
      h       

  private static void checkNewProxyPermission(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // java.lang.Class caller
        start local 1 // java.lang.Class proxyClass
         0: .line 1036
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sm */
        start local 2 // java.lang.SecurityManager sm
         1: .line 1037
            aload 2 /* sm */
            ifnull 9
         2: .line 1038
            aload 1 /* proxyClass */
            invokestatic sun.reflect.misc.ReflectUtil.isNonPublicProxyClass:(Ljava/lang/Class;)Z
            ifeq 9
         3: .line 1039
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 3 /* ccl */
        start local 3 // java.lang.ClassLoader ccl
         4: .line 1040
            aload 1 /* proxyClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* pcl */
        start local 4 // java.lang.ClassLoader pcl
         5: .line 1044
            aload 1 /* proxyClass */
            invokevirtual java.lang.Class.getPackageName:()Ljava/lang/String;
            astore 5 /* pkg */
        start local 5 // java.lang.String pkg
         6: .line 1045
            aload 0 /* caller */
            invokevirtual java.lang.Class.getPackageName:()Ljava/lang/String;
            astore 6 /* callerPkg */
        start local 6 // java.lang.String callerPkg
         7: .line 1047
            aload 4 /* pcl */
            aload 3 /* ccl */
            if_acmpne 8
            aload 5 /* pkg */
            aload 6 /* callerPkg */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 1048
      StackMap locals: java.lang.Class java.lang.Class java.lang.SecurityManager java.lang.ClassLoader java.lang.ClassLoader java.lang.String java.lang.String
      StackMap stack:
            aload 2 /* sm */
            new java.lang.reflect.ReflectPermission
            dup
            new java.lang.StringBuilder
            dup
            ldc "newProxyInPackage."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* pkg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.reflect.ReflectPermission.<init>:(Ljava/lang/String;)V
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
        end local 6 // java.lang.String callerPkg
        end local 5 // java.lang.String pkg
        end local 4 // java.lang.ClassLoader pcl
        end local 3 // java.lang.ClassLoader ccl
         9: .line 1052
      StackMap locals: java.lang.Class java.lang.Class java.lang.SecurityManager
      StackMap stack:
            return
        end local 2 // java.lang.SecurityManager sm
        end local 1 // java.lang.Class proxyClass
        end local 0 // java.lang.Class caller
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0      caller  Ljava/lang/Class<*>;
            0   10     1  proxyClass  Ljava/lang/Class<*>;
            1   10     2          sm  Ljava/lang/SecurityManager;
            4    9     3         ccl  Ljava/lang/ClassLoader;
            5    9     4         pcl  Ljava/lang/ClassLoader;
            6    9     5         pkg  Ljava/lang/String;
            7    9     6   callerPkg  Ljava/lang/String;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
    MethodParameters:
            Name  Flags
      caller      
      proxyClass  

  private static java.lang.ClassLoader getLoader(java.lang.Module);
    descriptor: (Ljava/lang/Module;)Ljava/lang/ClassLoader;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Module m
         0: .line 1058
            aload 0 /* m */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic run(Ljava/lang/Module;)Ljava/security/PrivilegedAction;
              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;
                  java/lang/Module.getClassLoader()Ljava/lang/ClassLoader; (5)
                  ()Ljava/lang/ClassLoader;
            astore 1 /* pa */
        start local 1 // java.security.PrivilegedAction pa
         1: .line 1059
            aload 1 /* pa */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.ClassLoader
            areturn
        end local 1 // java.security.PrivilegedAction pa
        end local 0 // java.lang.Module m
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     m  Ljava/lang/Module;
            1    2     1    pa  Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>;
    MethodParameters:
      Name  Flags
      m     

  public static boolean isProxyClass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class cl
         0: .line 1078
            ldc Ljava/lang/reflect/Proxy;
            aload 0 /* cl */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 1
            aload 0 /* cl */
            invokestatic java.lang.reflect.Proxy$ProxyBuilder.isProxyClass:(Ljava/lang/Class;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.Class cl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0    cl  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      cl    

  public static java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.Object proxy
         0: .line 1102
            aload 0 /* proxy */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic java.lang.reflect.Proxy.isProxyClass:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 1103
            new java.lang.IllegalArgumentException
            dup
            ldc "not a proxy instance"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1106
      StackMap locals:
      StackMap stack:
            aload 0 /* proxy */
            checkcast java.lang.reflect.Proxy
            astore 1 /* p */
        start local 1 // java.lang.reflect.Proxy p
         3: .line 1107
            aload 1 /* p */
            getfield java.lang.reflect.Proxy.h:Ljava/lang/reflect/InvocationHandler;
            astore 2 /* ih */
        start local 2 // java.lang.reflect.InvocationHandler ih
         4: .line 1108
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 12
         5: .line 1109
            aload 2 /* ih */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 3 /* ihClass */
        start local 3 // java.lang.Class ihClass
         6: .line 1110
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            astore 4 /* caller */
        start local 4 // java.lang.Class caller
         7: .line 1111
            aload 4 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         8: .line 1112
            aload 3 /* ihClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         9: .line 1111
            invokestatic sun.reflect.misc.ReflectUtil.needsPackageAccessCheck:(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z
        10: .line 1112
            ifeq 12
        11: .line 1114
            aload 3 /* ihClass */
            invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/Class;)V
        end local 4 // java.lang.Class caller
        end local 3 // java.lang.Class ihClass
        12: .line 1118
      StackMap locals: java.lang.reflect.Proxy java.lang.reflect.InvocationHandler
      StackMap stack:
            aload 2 /* ih */
            areturn
        end local 2 // java.lang.reflect.InvocationHandler ih
        end local 1 // java.lang.reflect.Proxy p
        end local 0 // java.lang.Object proxy
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0    proxy  Ljava/lang/Object;
            3   13     1        p  Ljava/lang/reflect/Proxy;
            4   13     2       ih  Ljava/lang/reflect/InvocationHandler;
            6   12     3  ihClass  Ljava/lang/Class<*>;
            7   12     4   caller  Ljava/lang/Class<*>;
    Exceptions:
      throws java.lang.IllegalArgumentException
    RuntimeVisibleAnnotations: 
      jdk.internal.reflect.CallerSensitive()
    MethodParameters:
       Name  Flags
      proxy  

  private static java.lang.reflect.Constructor lambda$0(java.lang.ClassLoader, jdk.internal.loader.AbstractClassLoaderValue$Sub);
    descriptor: (Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.ClassLoader ld
        start local 1 // jdk.internal.loader.AbstractClassLoaderValue$Sub clv
         0: .line 415
            new java.lang.reflect.Proxy$ProxyBuilder
            dup
            aload 0 /* ld */
            aload 1 /* clv */
            invokevirtual jdk.internal.loader.AbstractClassLoaderValue$Sub.key:()Ljava/lang/Object;
            checkcast java.lang.Class
            invokespecial java.lang.reflect.Proxy$ProxyBuilder.<init>:(Ljava/lang/ClassLoader;Ljava/lang/Class;)V
            invokevirtual java.lang.reflect.Proxy$ProxyBuilder.build:()Ljava/lang/reflect/Constructor;
            areturn
        end local 1 // jdk.internal.loader.AbstractClassLoaderValue$Sub clv
        end local 0 // java.lang.ClassLoader ld
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    ld  Ljava/lang/ClassLoader;
            0    1     1   clv  Ljdk/internal/loader/AbstractClassLoaderValue<Ljdk/internal/loader/ClassLoaderValue<Ljava/lang/reflect/Constructor<*>;>;Ljava/lang/reflect/Constructor<*>;>.Sub<Ljava/lang/Class<Ljava/lang/Object;>;>;

  private static java.lang.reflect.Constructor lambda$1(java.lang.ClassLoader, jdk.internal.loader.AbstractClassLoaderValue$Sub);
    descriptor: (Ljava/lang/ClassLoader;Ljdk/internal/loader/AbstractClassLoaderValue$Sub;)Ljava/lang/reflect/Constructor;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.ClassLoader ld
        start local 1 // jdk.internal.loader.AbstractClassLoaderValue$Sub clv
         0: .line 426
            new java.lang.reflect.Proxy$ProxyBuilder
            dup
            aload 0 /* ld */
            aload 1 /* clv */
            invokevirtual jdk.internal.loader.AbstractClassLoaderValue$Sub.key:()Ljava/lang/Object;
            checkcast java.util.List
            invokespecial java.lang.reflect.Proxy$ProxyBuilder.<init>:(Ljava/lang/ClassLoader;Ljava/util/List;)V
            invokevirtual java.lang.reflect.Proxy$ProxyBuilder.build:()Ljava/lang/reflect/Constructor;
            areturn
        end local 1 // jdk.internal.loader.AbstractClassLoaderValue$Sub clv
        end local 0 // java.lang.ClassLoader ld
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    ld  Ljava/lang/ClassLoader;
            0    1     1   clv  Ljdk/internal/loader/AbstractClassLoaderValue<Ljdk/internal/loader/ClassLoaderValue<Ljava/lang/reflect/Constructor<*>;>;Ljava/lang/reflect/Constructor<*>;>.Sub<Ljava/util/List<Ljava/lang/Class<*>;>;>;
}
SourceFile: "Proxy.java"
NestMembers:
  java.lang.reflect.Proxy$ProxyBuilder  java.lang.reflect.Proxy$ProxyBuilder$1
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private final ProxyBuilder = java.lang.reflect.Proxy$ProxyBuilder of java.lang.reflect.Proxy
  public final Sub = jdk.internal.loader.AbstractClassLoaderValue$Sub of jdk.internal.loader.AbstractClassLoaderValue