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 java.lang.reflect.WeakCache<java.lang.ClassLoader, java.lang.Class<?>[], java.lang.Class<?>> proxyClassCache;
    descriptor: Ljava/lang/reflect/WeakCache;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/reflect/WeakCache<Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;>;

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

  private static final java.lang.Object key0;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 234
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/reflect/InvocationHandler;
            aastore
         1: .line 233
            putstatic java.lang.reflect.Proxy.constructorParams:[Ljava/lang/Class;
         2: .line 240
            new java.lang.reflect.WeakCache
            dup
            new java.lang.reflect.Proxy$KeyFactory
            dup
            invokespecial java.lang.reflect.Proxy$KeyFactory.<init>:()V
            new java.lang.reflect.Proxy$ProxyClassFactory
            dup
            invokespecial java.lang.reflect.Proxy$ProxyClassFactory.<init>:()V
            invokespecial java.lang.reflect.WeakCache.<init>:(Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
            putstatic java.lang.reflect.Proxy.proxyClassCache:Ljava/lang/reflect/WeakCache;
         3: .line 425
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic java.lang.reflect.Proxy.key0:Ljava/lang/Object;
            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 251
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 252
            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 264
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 265
            aload 1 /* h */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 266
            aload 0 /* this */
            aload 1 /* h */
            putfield java.lang.reflect.Proxy.h:Ljava/lang/reflect/InvocationHandler;
         3: .line 267
            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=4, args_size=2
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.lang.Class[] interfaces
         0: .line 365
            aload 1 /* interfaces */
            invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 2 /* intfs */
        start local 2 // java.lang.Class[] intfs
         1: .line 366
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         2: .line 367
            aload 3 /* sm */
            ifnull 4
         3: .line 368
            invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            aload 0 /* loader */
            aload 2 /* intfs */
            invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
         4: .line 371
      StackMap locals: java.lang.Class[] java.lang.SecurityManager
      StackMap stack:
            aload 0 /* loader */
            aload 2 /* intfs */
            invokestatic java.lang.reflect.Proxy.getProxyClass0:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
            areturn
        end local 3 // java.lang.SecurityManager sm
        end local 2 // java.lang.Class[] intfs
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0      loader  Ljava/lang/ClassLoader;
            0    5     1  interfaces  [Ljava/lang/Class;
            1    5     2       intfs  [Ljava/lang/Class;
            2    5     3          sm  Ljava/lang/SecurityManager;
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      sun.reflect.CallerSensitive()
    MethodParameters:
            Name  Flags
      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 396
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         1: .line 397
            aload 3 /* sm */
            ifnull 6
         2: .line 398
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* ccl */
        start local 4 // java.lang.ClassLoader ccl
         3: .line 399
            aload 1 /* loader */
            invokestatic sun.misc.VM.isSystemDomainLoader:(Ljava/lang/ClassLoader;)Z
            ifeq 5
            aload 4 /* ccl */
            invokestatic sun.misc.VM.isSystemDomainLoader:(Ljava/lang/ClassLoader;)Z
            ifne 5
         4: .line 400
            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 402
      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 404
      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  

  private static java.lang.Class<?> getProxyClass0(java.lang.ClassLoader, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.lang.Class[] interfaces
         0: .line 412
            aload 1 /* interfaces */
            arraylength
            ldc 65535
            if_icmple 2
         1: .line 413
            new java.lang.IllegalArgumentException
            dup
            ldc "interface limit exceeded"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 419
      StackMap locals:
      StackMap stack:
            getstatic java.lang.reflect.Proxy.proxyClassCache:Ljava/lang/reflect/WeakCache;
            aload 0 /* loader */
            aload 1 /* interfaces */
            invokevirtual java.lang.reflect.WeakCache.get:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            areturn
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0      loader  Ljava/lang/ClassLoader;
            0    3     1  interfaces  [Ljava/lang/Class;
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    MethodParameters:
            Name  Flags
      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=5, locals=8, 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 708
            aload 2 /* h */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 710
            aload 1 /* interfaces */
            invokevirtual java.lang.Class[].clone:()Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 3 /* intfs */
        start local 3 // java.lang.Class[] intfs
         2: .line 711
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 4 /* sm */
        start local 4 // java.lang.SecurityManager sm
         3: .line 712
            aload 4 /* sm */
            ifnull 5
         4: .line 713
            invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            aload 0 /* loader */
            aload 3 /* intfs */
            invokestatic java.lang.reflect.Proxy.checkProxyAccess:(Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/Class;)V
         5: .line 719
      StackMap locals: java.lang.Class[] java.lang.SecurityManager
      StackMap stack:
            aload 0 /* loader */
            aload 3 /* intfs */
            invokestatic java.lang.reflect.Proxy.getProxyClass0:(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
            astore 5 /* cl */
        start local 5 // java.lang.Class cl
         6: .line 725
            aload 4 /* sm */
            ifnull 8
         7: .line 726
            invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            aload 5 /* cl */
            invokestatic java.lang.reflect.Proxy.checkNewProxyPermission:(Ljava/lang/Class;Ljava/lang/Class;)V
         8: .line 729
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 5 /* cl */
            getstatic java.lang.reflect.Proxy.constructorParams:[Ljava/lang/Class;
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 6 /* cons */
        start local 6 // java.lang.reflect.Constructor cons
         9: .line 731
            aload 5 /* cl */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifne 11
        10: .line 732
            new java.lang.reflect.Proxy$1
            dup
            aload 6 /* cons */
            invokespecial java.lang.reflect.Proxy$1.<init>:(Ljava/lang/reflect/Constructor;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        11: .line 739
      StackMap locals: java.lang.reflect.Constructor
      StackMap stack:
            aload 6 /* 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;
        12: areturn
        end local 6 // java.lang.reflect.Constructor cons
        13: .line 740
      StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.reflect.InvocationHandler java.lang.Class[] java.lang.SecurityManager java.lang.Class
      StackMap stack: java.lang.ReflectiveOperationException
            astore 6 /* e */
        start local 6 // java.lang.ReflectiveOperationException e
        14: .line 741
            new java.lang.InternalError
            dup
            aload 6 /* e */
            invokevirtual java.lang.ReflectiveOperationException.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.ReflectiveOperationException e
        15: .line 742
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 6 /* e */
        start local 6 // java.lang.reflect.InvocationTargetException e
        16: .line 743
            aload 6 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
            astore 7 /* t */
        start local 7 // java.lang.Throwable t
        17: .line 744
            aload 7 /* t */
            instanceof java.lang.RuntimeException
            ifeq 19
        18: .line 745
            aload 7 /* t */
            checkcast java.lang.RuntimeException
            athrow
        19: .line 747
      StackMap locals: java.lang.reflect.InvocationTargetException java.lang.Throwable
      StackMap stack:
            new java.lang.InternalError
            dup
            aload 7 /* t */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            aload 7 /* t */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Throwable t
        end local 6 // java.lang.reflect.InvocationTargetException e
        20: .line 749
      StackMap locals: java.lang.ClassLoader java.lang.Class[] java.lang.reflect.InvocationHandler java.lang.Class[] java.lang.SecurityManager java.lang.Class
      StackMap stack: java.lang.NoSuchMethodException
            astore 6 /* e */
        start local 6 // java.lang.NoSuchMethodException e
        21: .line 750
            new java.lang.InternalError
            dup
            aload 6 /* e */
            invokevirtual java.lang.NoSuchMethodException.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.NoSuchMethodException e
        end local 5 // java.lang.Class cl
        end local 4 // java.lang.SecurityManager sm
        end local 3 // java.lang.Class[] intfs
        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   22     0      loader  Ljava/lang/ClassLoader;
            0   22     1  interfaces  [Ljava/lang/Class;
            0   22     2           h  Ljava/lang/reflect/InvocationHandler;
            2   22     3       intfs  [Ljava/lang/Class;
            3   22     4          sm  Ljava/lang/SecurityManager;
            6   22     5          cl  Ljava/lang/Class<*>;
            9   13     6        cons  Ljava/lang/reflect/Constructor<*>;
           14   15     6           e  Ljava/lang/ReflectiveOperationException;
           16   20     6           e  Ljava/lang/reflect/InvocationTargetException;
           17   20     7           t  Ljava/lang/Throwable;
           21   22     6           e  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           6    12      13  Class java.lang.IllegalAccessException
           6    12      13  Class java.lang.InstantiationException
           6    12      15  Class java.lang.reflect.InvocationTargetException
           6    12      20  Class java.lang.NoSuchMethodException
    Exceptions:
      throws java.lang.IllegalArgumentException
    Signature: (Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      sun.reflect.CallerSensitive()
    MethodParameters:
            Name  Flags
      loader      
      interfaces  
      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=8, args_size=2
        start local 0 // java.lang.Class caller
        start local 1 // java.lang.Class proxyClass
         0: .line 755
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sm */
        start local 2 // java.lang.SecurityManager sm
         1: .line 756
            aload 2 /* sm */
            ifnull 15
         2: .line 757
            aload 1 /* proxyClass */
            invokestatic sun.reflect.misc.ReflectUtil.isNonPublicProxyClass:(Ljava/lang/Class;)Z
            ifeq 15
         3: .line 758
            aload 0 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 3 /* ccl */
        start local 3 // java.lang.ClassLoader ccl
         4: .line 759
            aload 1 /* proxyClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* pcl */
        start local 4 // java.lang.ClassLoader pcl
         5: .line 763
            aload 1 /* proxyClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 5 /* n */
        start local 5 // int n
         6: .line 764
            iload 5 /* n */
            iconst_m1
            if_icmpne 7
            ldc ""
            goto 8
      StackMap locals: java.lang.Class java.lang.Class java.lang.SecurityManager java.lang.ClassLoader java.lang.ClassLoader int
      StackMap stack:
         7: aload 1 /* proxyClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            iconst_0
            iload 5 /* n */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         8: astore 6 /* pkg */
        start local 6 // java.lang.String pkg
         9: .line 766
            aload 0 /* caller */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 5 /* n */
        10: .line 767
            iload 5 /* n */
            iconst_m1
            if_icmpne 11
            ldc ""
            goto 12
      StackMap locals: java.lang.String
      StackMap stack:
        11: aload 0 /* caller */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            iconst_0
            iload 5 /* n */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        12: astore 7 /* callerPkg */
        start local 7 // java.lang.String callerPkg
        13: .line 769
            aload 4 /* pcl */
            aload 3 /* ccl */
            if_acmpne 14
            aload 6 /* pkg */
            aload 7 /* callerPkg */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
        14: .line 770
      StackMap locals: 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 6 /* 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 7 // java.lang.String callerPkg
        end local 6 // java.lang.String pkg
        end local 5 // int n
        end local 4 // java.lang.ClassLoader pcl
        end local 3 // java.lang.ClassLoader ccl
        15: .line 774
      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   16     0      caller  Ljava/lang/Class<*>;
            0   16     1  proxyClass  Ljava/lang/Class<*>;
            1   16     2          sm  Ljava/lang/SecurityManager;
            4   15     3         ccl  Ljava/lang/ClassLoader;
            5   15     4         pcl  Ljava/lang/ClassLoader;
            6   15     5           n  I
            9   15     6         pkg  Ljava/lang/String;
           13   15     7   callerPkg  Ljava/lang/String;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
    MethodParameters:
            Name  Flags
      caller      
      proxyClass  

  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 791
            ldc Ljava/lang/reflect/Proxy;
            aload 0 /* cl */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 1
            getstatic java.lang.reflect.Proxy.proxyClassCache:Ljava/lang/reflect/WeakCache;
            aload 0 /* cl */
            invokevirtual java.lang.reflect.WeakCache.containsValue:(Ljava/lang/Object;)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 815
            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 816
            new java.lang.IllegalArgumentException
            dup
            ldc "not a proxy instance"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 819
      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 820
            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 821
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 12
         5: .line 822
            aload 2 /* ih */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 3 /* ihClass */
        start local 3 // java.lang.Class ihClass
         6: .line 823
            invokestatic sun.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
            astore 4 /* caller */
        start local 4 // java.lang.Class caller
         7: .line 824
            aload 4 /* caller */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         8: .line 825
            aload 3 /* ihClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         9: .line 824
            invokestatic sun.reflect.misc.ReflectUtil.needsPackageAccessCheck:(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z
        10: .line 825
            ifeq 12
        11: .line 827
            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 831
      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: 
      sun.reflect.CallerSensitive()
    MethodParameters:
       Name  Flags
      proxy  

  private static native java.lang.Class<?> defineClass0(java.lang.ClassLoader, java.lang.String, byte[], int, int);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      loader  
      name    
      b       
      off     
      len     
}
SourceFile: "Proxy.java"
NestMembers:
  java.lang.reflect.Proxy$1  java.lang.reflect.Proxy$Key1  java.lang.reflect.Proxy$Key2  java.lang.reflect.Proxy$KeyFactory  java.lang.reflect.Proxy$KeyX  java.lang.reflect.Proxy$ProxyClassFactory
InnerClasses:
  java.lang.reflect.Proxy$1
  private final Key1 = java.lang.reflect.Proxy$Key1 of java.lang.reflect.Proxy
  private final Key2 = java.lang.reflect.Proxy$Key2 of java.lang.reflect.Proxy
  private final KeyFactory = java.lang.reflect.Proxy$KeyFactory of java.lang.reflect.Proxy
  private final KeyX = java.lang.reflect.Proxy$KeyX of java.lang.reflect.Proxy
  private final ProxyClassFactory = java.lang.reflect.Proxy$ProxyClassFactory of java.lang.reflect.Proxy