public class javax.management.JMX
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.management.JMX
  super_class: java.lang.Object
{
  static final javax.management.JMX proof;
    descriptor: Ljavax/management/JMX;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  public static final java.lang.String DEFAULT_VALUE_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "defaultValue"

  public static final java.lang.String IMMUTABLE_INFO_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "immutableInfo"

  public static final java.lang.String INTERFACE_CLASS_NAME_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "interfaceClassName"

  public static final java.lang.String LEGAL_VALUES_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "legalValues"

  public static final java.lang.String MAX_VALUE_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "maxValue"

  public static final java.lang.String MIN_VALUE_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "minValue"

  public static final java.lang.String MXBEAN_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "mxbean"

  public static final java.lang.String OPEN_TYPE_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "openType"

  public static final java.lang.String ORIGINAL_TYPE_FIELD;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "originalType"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            new javax.management.JMX
            dup
            invokespecial javax.management.JMX.<init>:()V
            putstatic javax.management.JMX.proof:Ljavax/management/JMX;
         1: .line 99
            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 // javax.management.JMX this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.management.JMX this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/management/JMX;

  public static <T> T newMBeanProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class<T>);
    descriptor: (Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // javax.management.MBeanServerConnection connection
        start local 1 // javax.management.ObjectName objectName
        start local 2 // java.lang.Class interfaceClass
         0: .line 167
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iconst_0
            invokestatic javax.management.JMX.newMBeanProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;Z)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Class interfaceClass
        end local 1 // javax.management.ObjectName objectName
        end local 0 // javax.management.MBeanServerConnection connection
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0      connection  Ljavax/management/MBeanServerConnection;
            0    1     1      objectName  Ljavax/management/ObjectName;
            0    1     2  interfaceClass  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
                Name  Flags
      connection      
      objectName      
      interfaceClass  

  public static <T> T newMBeanProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class<T>, );
    descriptor: (Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;Z)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // javax.management.MBeanServerConnection connection
        start local 1 // javax.management.ObjectName objectName
        start local 2 // java.lang.Class interfaceClass
        start local 3 // boolean notificationBroadcaster
         0: .line 208
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iload 3 /* notificationBroadcaster */
            iconst_0
            invokestatic javax.management.JMX.createProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;ZZ)Ljava/lang/Object;
            areturn
        end local 3 // boolean notificationBroadcaster
        end local 2 // java.lang.Class interfaceClass
        end local 1 // javax.management.ObjectName objectName
        end local 0 // javax.management.MBeanServerConnection connection
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    1     0               connection  Ljavax/management/MBeanServerConnection;
            0    1     1               objectName  Ljavax/management/ObjectName;
            0    1     2           interfaceClass  Ljava/lang/Class<TT;>;
            0    1     3  notificationBroadcaster  Z
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;Z)TT;
    MethodParameters:
                         Name  Flags
      connection               
      objectName               
      interfaceClass           
      notificationBroadcaster  

  public static <T> T newMXBeanProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class<T>);
    descriptor: (Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // javax.management.MBeanServerConnection connection
        start local 1 // javax.management.ObjectName objectName
        start local 2 // java.lang.Class interfaceClass
         0: .line 305
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iconst_0
            invokestatic javax.management.JMX.newMXBeanProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;Z)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Class interfaceClass
        end local 1 // javax.management.ObjectName objectName
        end local 0 // javax.management.MBeanServerConnection connection
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0      connection  Ljavax/management/MBeanServerConnection;
            0    1     1      objectName  Ljavax/management/ObjectName;
            0    1     2  interfaceClass  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
                Name  Flags
      connection      
      objectName      
      interfaceClass  

  public static <T> T newMXBeanProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class<T>, );
    descriptor: (Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;Z)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // javax.management.MBeanServerConnection connection
        start local 1 // javax.management.ObjectName objectName
        start local 2 // java.lang.Class interfaceClass
        start local 3 // boolean notificationBroadcaster
         0: .line 346
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iload 3 /* notificationBroadcaster */
            iconst_1
            invokestatic javax.management.JMX.createProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;ZZ)Ljava/lang/Object;
            areturn
        end local 3 // boolean notificationBroadcaster
        end local 2 // java.lang.Class interfaceClass
        end local 1 // javax.management.ObjectName objectName
        end local 0 // javax.management.MBeanServerConnection connection
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    1     0               connection  Ljavax/management/MBeanServerConnection;
            0    1     1               objectName  Ljavax/management/ObjectName;
            0    1     2           interfaceClass  Ljava/lang/Class<TT;>;
            0    1     3  notificationBroadcaster  Z
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;Z)TT;
    MethodParameters:
                         Name  Flags
      connection               
      objectName               
      interfaceClass           
      notificationBroadcaster  

  public static boolean isMXBeanInterface(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class interfaceClass
         0: .line 364
            aload 0 /* interfaceClass */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 2
         1: .line 365
            iconst_0
            ireturn
         2: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* interfaceClass */
            ldc Ljavax/management/MXBean;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast javax.management.MXBean
            astore 1 /* a */
        start local 1 // javax.management.MXBean a
         3: .line 367
            aload 1 /* a */
            ifnull 5
         4: .line 368
            aload 1 /* a */
            invokeinterface javax.management.MXBean.value:()Z
            ireturn
         5: .line 369
      StackMap locals: javax.management.MXBean
      StackMap stack:
            aload 0 /* interfaceClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "MXBean"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ireturn
        end local 1 // javax.management.MXBean a
        end local 0 // java.lang.Class interfaceClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0  interfaceClass  Ljava/lang/Class<*>;
            3    6     1               a  Ljavax/management/MXBean;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
                Name  Flags
      interfaceClass  

  private static <T> T createProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class<T>, boolean, );
    descriptor: (Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;ZZ)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // javax.management.MBeanServerConnection connection
        start local 1 // javax.management.ObjectName objectName
        start local 2 // java.lang.Class interfaceClass
        start local 3 // boolean notificationEmitter
        start local 4 // boolean isMXBean
         0: .line 392
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 2
         1: .line 393
            aload 2 /* interfaceClass */
            invokestatic javax.management.JMX.checkProxyInterface:(Ljava/lang/Class;)V
         2: .line 396
      StackMap locals:
      StackMap stack:
            iload 4 /* isMXBean */
            ifeq 5
         3: .line 398
            aload 2 /* interfaceClass */
            invokestatic com.sun.jmx.mbeanserver.Introspector.testComplianceMXBeanInterface:(Ljava/lang/Class;)V
         4: .line 399
            goto 9
         5: .line 401
      StackMap locals:
      StackMap stack:
            aload 2 /* interfaceClass */
            invokestatic com.sun.jmx.mbeanserver.Introspector.testComplianceMBeanInterface:(Ljava/lang/Class;)V
         6: .line 403
            goto 9
      StackMap locals:
      StackMap stack: javax.management.NotCompliantMBeanException
         7: astore 5 /* e */
        start local 5 // javax.management.NotCompliantMBeanException e
         8: .line 404
            new java.lang.IllegalArgumentException
            dup
            aload 5 /* e */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // javax.management.NotCompliantMBeanException e
         9: .line 407
      StackMap locals:
      StackMap stack:
            new javax.management.MBeanServerInvocationHandler
            dup
        10: .line 408
            aload 0 /* connection */
            aload 1 /* objectName */
            iload 4 /* isMXBean */
        11: .line 407
            invokespecial javax.management.MBeanServerInvocationHandler.<init>:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Z)V
            astore 5 /* handler */
        start local 5 // java.lang.reflect.InvocationHandler handler
        12: .line 410
            iload 3 /* notificationEmitter */
            ifeq 16
        13: .line 412
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* interfaceClass */
            aastore
            dup
            iconst_1
            ldc Ljavax/management/NotificationEmitter;
            aastore
        14: .line 411
            astore 6 /* interfaces */
        start local 6 // java.lang.Class[] interfaces
        15: .line 413
            goto 17
        end local 6 // java.lang.Class[] interfaces
        16: .line 414
      StackMap locals: java.lang.reflect.InvocationHandler
      StackMap stack:
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* interfaceClass */
            aastore
            astore 6 /* interfaces */
        start local 6 // java.lang.Class[] interfaces
        17: .line 417
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 2 /* interfaceClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
        18: .line 418
            aload 6 /* interfaces */
        19: .line 419
            aload 5 /* handler */
        20: .line 416
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            astore 7 /* proxy */
        start local 7 // java.lang.Object proxy
        21: .line 420
            aload 2 /* interfaceClass */
            aload 7 /* proxy */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 7 // java.lang.Object proxy
        end local 6 // java.lang.Class[] interfaces
        end local 5 // java.lang.reflect.InvocationHandler handler
        end local 4 // boolean isMXBean
        end local 3 // boolean notificationEmitter
        end local 2 // java.lang.Class interfaceClass
        end local 1 // javax.management.ObjectName objectName
        end local 0 // javax.management.MBeanServerConnection connection
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   22     0           connection  Ljavax/management/MBeanServerConnection;
            0   22     1           objectName  Ljavax/management/ObjectName;
            0   22     2       interfaceClass  Ljava/lang/Class<TT;>;
            0   22     3  notificationEmitter  Z
            0   22     4             isMXBean  Z
            8    9     5                    e  Ljavax/management/NotCompliantMBeanException;
           12   22     5              handler  Ljava/lang/reflect/InvocationHandler;
           15   16     6           interfaces  [Ljava/lang/Class;
           17   22     6           interfaces  [Ljava/lang/Class;
           21   22     7                proxy  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           2     6       7  Class javax.management.NotCompliantMBeanException
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;ZZ)TT;
    MethodParameters:
                     Name  Flags
      connection           
      objectName           
      interfaceClass       
      notificationEmitter  
      isMXBean             

  private static void checkProxyInterface(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Class interfaceClass
         0: .line 430
            aload 0 /* interfaceClass */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifne 2
         1: .line 431
            new java.lang.SecurityException
            dup
            ldc "mbean proxy interface non-public"
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* interfaceClass */
            invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/Class;)V
         3: .line 434
            return
        end local 0 // java.lang.Class interfaceClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0  interfaceClass  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
                Name  Flags
      interfaceClass  
}
SourceFile: "JMX.java"