public class com.netflix.config.jmx.ConfigJMXManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.netflix.config.jmx.ConfigJMXManager
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.config.jmx.ConfigJMXManager this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            return
        end local 0 // com.netflix.config.jmx.ConfigJMXManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/netflix/config/jmx/ConfigJMXManager;

  public static com.netflix.config.jmx.ConfigMBean registerConfigMbean(org.apache.commons.configuration.AbstractConfiguration);
    descriptor: (Lorg/apache/commons/configuration/AbstractConfiguration;)Lcom/netflix/config/jmx/ConfigMBean;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.apache.commons.configuration.AbstractConfiguration config
         0: .line 44
            aconst_null
            astore 1 /* mbean */
        start local 1 // javax.management.StandardMBean mbean
         1: .line 45
            aconst_null
            astore 2 /* bean */
        start local 2 // com.netflix.config.jmx.ConfigMBean bean
         2: .line 47
            invokestatic java.lang.management.ManagementFactory.getPlatformMBeanServer:()Ljavax/management/MBeanServer;
            astore 3 /* mbs */
        start local 3 // javax.management.MBeanServer mbs
         3: .line 48
            new com.netflix.config.jmx.BaseConfigMBean
            dup
            aload 0 /* config */
            invokespecial com.netflix.config.jmx.BaseConfigMBean.<init>:(Lorg/apache/commons/configuration/AbstractConfiguration;)V
            astore 2 /* bean */
         4: .line 49
            new javax.management.StandardMBean
            dup
            aload 2 /* bean */
            ldc Lcom/netflix/config/jmx/ConfigMBean;
            invokespecial javax.management.StandardMBean.<init>:(Ljava/lang/Object;Ljava/lang/Class;)V
            astore 1 /* mbean */
         5: .line 50
            aload 3 /* mbs */
            aload 1 /* mbean */
            aload 0 /* config */
            aload 2 /* bean */
            invokestatic com.netflix.config.jmx.ConfigJMXManager.getJMXObjectName:(Lorg/apache/commons/configuration/AbstractConfiguration;Lcom/netflix/config/jmx/ConfigMBean;)Ljavax/management/ObjectName;
            invokeinterface javax.management.MBeanServer.registerMBean:(Ljava/lang/Object;Ljavax/management/ObjectName;)Ljavax/management/ObjectInstance;
            pop
        end local 3 // javax.management.MBeanServer mbs
         6: .line 51
            goto 21
      StackMap locals: org.apache.commons.configuration.AbstractConfiguration javax.management.StandardMBean com.netflix.config.jmx.ConfigMBean
      StackMap stack: javax.management.NotCompliantMBeanException
         7: astore 3 /* e */
        start local 3 // javax.management.NotCompliantMBeanException e
         8: .line 52
            new java.lang.RuntimeException
            dup
         9: .line 53
            ldc "NotCompliantMBeanException"
            aload 3 /* e */
        10: .line 52
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.NotCompliantMBeanException e
        11: .line 54
      StackMap locals:
      StackMap stack: javax.management.InstanceAlreadyExistsException
            astore 3 /* e */
        start local 3 // javax.management.InstanceAlreadyExistsException e
        12: .line 55
            new java.lang.RuntimeException
            dup
            ldc "InstanceAlreadyExistsException"
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.InstanceAlreadyExistsException e
        13: .line 56
      StackMap locals:
      StackMap stack: javax.management.MBeanRegistrationException
            astore 3 /* e */
        start local 3 // javax.management.MBeanRegistrationException e
        14: .line 57
            new java.lang.RuntimeException
            dup
        15: .line 58
            ldc "MBeanRegistrationException"
            aload 3 /* e */
        16: .line 57
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.MBeanRegistrationException e
        17: .line 59
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        18: .line 60
            new java.lang.RuntimeException
            dup
        19: .line 61
            ldc "registerConfigMbeanException"
            aload 3 /* e */
        20: .line 60
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        21: .line 63
      StackMap locals:
      StackMap stack:
            aload 2 /* bean */
            areturn
        end local 2 // com.netflix.config.jmx.ConfigMBean bean
        end local 1 // javax.management.StandardMBean mbean
        end local 0 // org.apache.commons.configuration.AbstractConfiguration config
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0  config  Lorg/apache/commons/configuration/AbstractConfiguration;
            1   22     1   mbean  Ljavax/management/StandardMBean;
            2   22     2    bean  Lcom/netflix/config/jmx/ConfigMBean;
            3    6     3     mbs  Ljavax/management/MBeanServer;
            8   11     3       e  Ljavax/management/NotCompliantMBeanException;
           12   13     3       e  Ljavax/management/InstanceAlreadyExistsException;
           14   17     3       e  Ljavax/management/MBeanRegistrationException;
           18   21     3       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     6       7  Class javax.management.NotCompliantMBeanException
           2     6      11  Class javax.management.InstanceAlreadyExistsException
           2     6      13  Class javax.management.MBeanRegistrationException
           2     6      17  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      config  

  public static void unRegisterConfigMBean(org.apache.commons.configuration.AbstractConfiguration, com.netflix.config.jmx.ConfigMBean);
    descriptor: (Lorg/apache/commons/configuration/AbstractConfiguration;Lcom/netflix/config/jmx/ConfigMBean;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.commons.configuration.AbstractConfiguration config
        start local 1 // com.netflix.config.jmx.ConfigMBean mbean
         0: .line 68
            aload 1 /* mbean */
            ifnonnull 4
         1: .line 69
            new java.lang.RuntimeException
            dup
         2: .line 70
            ldc "Cannot unregister JMX Mbean. The object is null"
         3: .line 69
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 72
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.management.ManagementFactory.getPlatformMBeanServer:()Ljavax/management/MBeanServer;
            astore 2 /* mbs */
        start local 2 // javax.management.MBeanServer mbs
         5: .line 74
            aload 2 /* mbs */
            aload 0 /* config */
            aload 1 /* mbean */
            invokestatic com.netflix.config.jmx.ConfigJMXManager.getJMXObjectName:(Lorg/apache/commons/configuration/AbstractConfiguration;Lcom/netflix/config/jmx/ConfigMBean;)Ljavax/management/ObjectName;
            invokeinterface javax.management.MBeanServer.unregisterMBean:(Ljavax/management/ObjectName;)V
         6: .line 75
            goto 19
      StackMap locals: org.apache.commons.configuration.AbstractConfiguration com.netflix.config.jmx.ConfigMBean javax.management.MBeanServer
      StackMap stack: javax.management.InstanceNotFoundException
         7: astore 3 /* e */
        start local 3 // javax.management.InstanceNotFoundException e
         8: .line 76
            new java.lang.RuntimeException
            dup
         9: .line 77
            ldc "InstanceNotFoundException"
            aload 3 /* e */
        10: .line 76
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.InstanceNotFoundException e
        11: .line 78
      StackMap locals:
      StackMap stack: javax.management.MBeanRegistrationException
            astore 3 /* e */
        start local 3 // javax.management.MBeanRegistrationException e
        12: .line 79
            new java.lang.RuntimeException
            dup
        13: .line 80
            ldc "MBeanRegistrationException"
            aload 3 /* e */
        14: .line 79
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.MBeanRegistrationException e
        15: .line 81
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        16: .line 82
            new java.lang.RuntimeException
            dup
        17: .line 83
            ldc "unRegisterConfigMBeanException"
            aload 3 /* e */
        18: .line 82
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        19: .line 86
      StackMap locals:
      StackMap stack:
            return
        end local 2 // javax.management.MBeanServer mbs
        end local 1 // com.netflix.config.jmx.ConfigMBean mbean
        end local 0 // org.apache.commons.configuration.AbstractConfiguration config
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0  config  Lorg/apache/commons/configuration/AbstractConfiguration;
            0   20     1   mbean  Lcom/netflix/config/jmx/ConfigMBean;
            5   20     2     mbs  Ljavax/management/MBeanServer;
            8   11     3       e  Ljavax/management/InstanceNotFoundException;
           12   15     3       e  Ljavax/management/MBeanRegistrationException;
           16   19     3       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           5     6       7  Class javax.management.InstanceNotFoundException
           5     6      11  Class javax.management.MBeanRegistrationException
           5     6      15  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      config  
      mbean   

  private static javax.management.ObjectName getJMXObjectName(org.apache.commons.configuration.AbstractConfiguration, com.netflix.config.jmx.ConfigMBean);
    descriptor: (Lorg/apache/commons/configuration/AbstractConfiguration;Lcom/netflix/config/jmx/ConfigMBean;)Ljavax/management/ObjectName;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // org.apache.commons.configuration.AbstractConfiguration config
        start local 1 // com.netflix.config.jmx.ConfigMBean bean
         0: .line 92
            aload 1 /* bean */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 2 /* c */
        start local 2 // java.lang.Class c
         1: .line 93
            aload 2 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 3 /* className */
        start local 3 // java.lang.String className
         2: .line 94
            aload 3 /* className */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 4 /* lastDot */
        start local 4 // int lastDot
         3: .line 95
            new javax.management.ObjectName
            dup
            new java.lang.StringBuilder
            dup
            ldc "Config-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 96
            aload 3 /* className */
            iconst_0
            iload 4 /* lastDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":class="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 97
            aload 3 /* className */
            iload 4 /* lastDot */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 95
            invokespecial javax.management.ObjectName.<init>:(Ljava/lang/String;)V
            astore 5 /* name */
        start local 5 // javax.management.ObjectName name
         7: .line 98
            aload 5 /* name */
         8: areturn
        end local 5 // javax.management.ObjectName name
        end local 4 // int lastDot
        end local 3 // java.lang.String className
        end local 2 // java.lang.Class c
         9: .line 99
      StackMap locals:
      StackMap stack: javax.management.MalformedObjectNameException
            astore 2 /* e */
        start local 2 // javax.management.MalformedObjectNameException e
        10: .line 100
            new java.lang.RuntimeException
            dup
        11: .line 101
            ldc "MalformedObjectNameException"
            aload 2 /* e */
        12: .line 100
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.management.MalformedObjectNameException e
        13: .line 102
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
            astore 2 /* e */
        start local 2 // java.lang.NullPointerException e
        14: .line 103
            new java.lang.RuntimeException
            dup
        15: .line 104
            ldc "NullPointerException"
            aload 2 /* e */
        16: .line 103
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.NullPointerException e
        end local 1 // com.netflix.config.jmx.ConfigMBean bean
        end local 0 // org.apache.commons.configuration.AbstractConfiguration config
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0     config  Lorg/apache/commons/configuration/AbstractConfiguration;
            0   17     1       bean  Lcom/netflix/config/jmx/ConfigMBean;
            1    9     2          c  Ljava/lang/Class<+Lcom/netflix/config/jmx/ConfigMBean;>;
            2    9     3  className  Ljava/lang/String;
            3    9     4    lastDot  I
            7    9     5       name  Ljavax/management/ObjectName;
           10   13     2          e  Ljavax/management/MalformedObjectNameException;
           14   17     2          e  Ljava/lang/NullPointerException;
      Exception table:
        from    to  target  type
           0     8       9  Class javax.management.MalformedObjectNameException
           0     8      13  Class java.lang.NullPointerException
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      config  
      bean    
}
SourceFile: "ConfigJMXManager.java"