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 171
            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 notificationEmitter
         0: .line 216
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iload 3 /* notificationEmitter */
            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 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    1     0           connection  Ljavax/management/MBeanServerConnection;
            0    1     1           objectName  Ljavax/management/ObjectName;
            0    1     2       interfaceClass  Ljava/lang/Class<TT;>;
            0    1     3  notificationEmitter  Z
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;Z)TT;
    MethodParameters:
                     Name  Flags
      connection           
      objectName           
      interfaceClass       
      notificationEmitter  

  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 315
            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 notificationEmitter
         0: .line 359
            aload 0 /* connection */
            aload 1 /* objectName */
            aload 2 /* interfaceClass */
            iload 3 /* notificationEmitter */
            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 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    1     0           connection  Ljavax/management/MBeanServerConnection;
            0    1     1           objectName  Ljavax/management/ObjectName;
            0    1     2       interfaceClass  Ljava/lang/Class<TT;>;
            0    1     3  notificationEmitter  Z
    Signature: <T:Ljava/lang/Object;>(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class<TT;>;Z)TT;
    MethodParameters:
                     Name  Flags
      connection           
      objectName           
      interfaceClass       
      notificationEmitter  

  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 377
            aload 0 /* interfaceClass */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 2
         1: .line 378
            iconst_0
            ireturn
         2: .line 379
      StackMap locals:
      StackMap stack:
            aload 0 /* interfaceClass */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifne 5
         3: .line 380
            getstatic com.sun.jmx.mbeanserver.Introspector.ALLOW_NONPUBLIC_MBEAN:Z
            ifne 5
         4: .line 381
            iconst_0
            ireturn
         5: .line 383
      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
         6: .line 384
            aload 1 /* a */
            ifnull 8
         7: .line 385
            aload 1 /* a */
            invokeinterface javax.management.MXBean.value:()Z
            ireturn
         8: .line 386
      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    9     0  interfaceClass  Ljava/lang/Class<*>;
            6    9     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 410
            iload 4 /* isMXBean */
            ifeq 3
         1: .line 412
            aload 2 /* interfaceClass */
            invokestatic com.sun.jmx.mbeanserver.Introspector.testComplianceMXBeanInterface:(Ljava/lang/Class;)V
         2: .line 413
            goto 7
         3: .line 415
      StackMap locals:
      StackMap stack:
            aload 2 /* interfaceClass */
            invokestatic com.sun.jmx.mbeanserver.Introspector.testComplianceMBeanInterface:(Ljava/lang/Class;)V
         4: .line 417
            goto 7
      StackMap locals:
      StackMap stack: javax.management.NotCompliantMBeanException
         5: astore 5 /* e */
        start local 5 // javax.management.NotCompliantMBeanException e
         6: .line 418
            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
         7: .line 421
      StackMap locals:
      StackMap stack:
            new javax.management.MBeanServerInvocationHandler
            dup
         8: .line 422
            aload 0 /* connection */
            aload 1 /* objectName */
            iload 4 /* isMXBean */
         9: .line 421
            invokespecial javax.management.MBeanServerInvocationHandler.<init>:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Z)V
            astore 5 /* handler */
        start local 5 // java.lang.reflect.InvocationHandler handler
        10: .line 424
            iload 3 /* notificationEmitter */
            ifeq 14
        11: .line 426
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* interfaceClass */
            aastore
            dup
            iconst_1
            ldc Ljavax/management/NotificationEmitter;
            aastore
        12: .line 425
            astore 6 /* interfaces */
        start local 6 // java.lang.Class[] interfaces
        13: .line 427
            goto 15
        end local 6 // java.lang.Class[] interfaces
        14: .line 428
      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
        15: .line 431
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 2 /* interfaceClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
        16: .line 432
            aload 6 /* interfaces */
        17: .line 433
            aload 5 /* handler */
        18: .line 430
            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
        19: .line 434
            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   20     0           connection  Ljavax/management/MBeanServerConnection;
            0   20     1           objectName  Ljavax/management/ObjectName;
            0   20     2       interfaceClass  Ljava/lang/Class<TT;>;
            0   20     3  notificationEmitter  Z
            0   20     4             isMXBean  Z
            6    7     5                    e  Ljavax/management/NotCompliantMBeanException;
           10   20     5              handler  Ljava/lang/reflect/InvocationHandler;
           13   14     6           interfaces  [Ljava/lang/Class;
           15   20     6           interfaces  [Ljava/lang/Class;
           19   20     7                proxy  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           0     4       5  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             
}
SourceFile: "JMX.java"