public class org.glassfish.gmbal.impl.JMXRegistrationManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.gmbal.impl.JMXRegistrationManager
  super_class: java.lang.Object
{
  private int suspendCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final org.glassfish.gmbal.impl.ManagedObjectManagerInternal mom;
    descriptor: Lorg/glassfish/gmbal/impl/ManagedObjectManagerInternal;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.management.ObjectName rootParentName;
    descriptor: Ljavax/management/ObjectName;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final java.lang.Object lock;
    descriptor: Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL

  private final java.util.LinkedHashSet<org.glassfish.gmbal.impl.MBeanImpl> deferredRegistrations;
    descriptor: Ljava/util/LinkedHashSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/LinkedHashSet<Lorg/glassfish/gmbal/impl/MBeanImpl;>;

  org.glassfish.gmbal.impl.MBeanImpl root;
    descriptor: Lorg/glassfish/gmbal/impl/MBeanImpl;
    flags: (0x0000) 

  boolean isJMXRegistrationEnabled;
    descriptor: Z
    flags: (0x0000) 

  private org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener callback;
    descriptor: Lorg/glassfish/gmbal/impl/JMXRegistrationManager$RootParentListener;
    flags: (0x0002) ACC_PRIVATE

  private org.glassfish.external.amx.MBeanListener rpListener;
    descriptor: Lorg/glassfish/external/amx/MBeanListener;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.glassfish.gmbal.impl.ManagedObjectManagerInternal, javax.management.ObjectName);
    descriptor: (Lorg/glassfish/gmbal/impl/ManagedObjectManagerInternal;Ljavax/management/ObjectName;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
        start local 1 // org.glassfish.gmbal.impl.ManagedObjectManagerInternal mom
        start local 2 // javax.management.ObjectName rootParentName
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
         2: .line 59
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
         3: .line 60
            aload 0 /* this */
            aload 1 /* mom */
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.mom:Lorg/glassfish/gmbal/impl/ManagedObjectManagerInternal;
         4: .line 61
            aload 0 /* this */
            aload 2 /* rootParentName */
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.rootParentName:Ljavax/management/ObjectName;
         5: .line 62
            aload 0 /* this */
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
         6: .line 63
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.root:Lorg/glassfish/gmbal/impl/MBeanImpl;
         7: .line 64
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
         8: .line 65
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.callback:Lorg/glassfish/gmbal/impl/JMXRegistrationManager$RootParentListener;
         9: .line 66
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
        10: .line 67
            return
        end local 2 // javax.management.ObjectName rootParentName
        end local 1 // org.glassfish.gmbal.impl.ManagedObjectManagerInternal mom
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
            0   11     1             mom  Lorg/glassfish/gmbal/impl/ManagedObjectManagerInternal;
            0   11     2  rootParentName  Ljavax/management/ObjectName;
    MethodParameters:
                Name  Flags
      mom             
      rootParentName  

  public void setRoot(org.glassfish.gmbal.impl.MBeanImpl);
    descriptor: (Lorg/glassfish/gmbal/impl/MBeanImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
        start local 1 // org.glassfish.gmbal.impl.MBeanImpl root
         0: .line 79
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 80
            aload 0 /* this */
            aload 1 /* root */
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.root:Lorg/glassfish/gmbal/impl/MBeanImpl;
         2: .line 81
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.rootParentName:Ljavax/management/ObjectName;
            ifnonnull 6
         3: .line 82
            aload 0 /* this */
            iconst_1
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
         4: .line 83
            aload 0 /* this */
            aload 1 /* root */
            invokevirtual org.glassfish.gmbal.impl.JMXRegistrationManager.register:(Lorg/glassfish/gmbal/impl/MBeanImpl;)V
         5: .line 84
            goto 14
         6: .line 87
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
            ifle 9
         7: .line 88
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
            aload 1 /* root */
            invokevirtual java.util.LinkedHashSet.add:(Ljava/lang/Object;)Z
            pop
         8: .line 89
            aload 1 /* root */
            iconst_1
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.suspended:(Z)V
         9: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener
            dup
            aload 0 /* this */
            invokespecial org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener.<init>:(Lorg/glassfish/gmbal/impl/JMXRegistrationManager;)V
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.callback:Lorg/glassfish/gmbal/impl/JMXRegistrationManager$RootParentListener;
        10: .line 97
            aload 0 /* this */
            new org.glassfish.external.amx.MBeanListener
            dup
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.mom:Lorg/glassfish/gmbal/impl/ManagedObjectManagerInternal;
            invokeinterface org.glassfish.gmbal.impl.ManagedObjectManagerInternal.getMBeanServer:()Ljavax/management/MBeanServer;
        11: .line 98
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.rootParentName:Ljavax/management/ObjectName;
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.callback:Lorg/glassfish/gmbal/impl/JMXRegistrationManager$RootParentListener;
            invokespecial org.glassfish.external.amx.MBeanListener.<init>:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Lorg/glassfish/external/amx/MBeanListener$Callback;)V
        12: .line 97
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
        13: .line 99
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
            invokevirtual org.glassfish.external.amx.MBeanListener.startListening:()V
        14: .line 79
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 2
            monitorexit
        17: athrow
        18: .line 102
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.glassfish.gmbal.impl.MBeanImpl root
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
            0   19     1  root  Lorg/glassfish/gmbal/impl/MBeanImpl;
      Exception table:
        from    to  target  type
           1    15      16  any
          16    17      16  any
    Exceptions:
      throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
    MethodParameters:
      Name  Flags
      root  

  void clear();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
         0: .line 106
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 107
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.root:Lorg/glassfish/gmbal/impl/MBeanImpl;
         2: .line 108
            aload 0 /* this */
            iconst_0
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
         3: .line 110
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
            ifnull 5
         4: .line 111
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
            invokevirtual org.glassfish.external.amx.MBeanListener.stopListening:()V
         5: .line 113
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.rpListener:Lorg/glassfish/external/amx/MBeanListener;
         6: .line 114
            aload 0 /* this */
            aconst_null
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.callback:Lorg/glassfish/gmbal/impl/JMXRegistrationManager$RootParentListener;
         7: .line 106
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 116
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any

  public void suspendRegistration();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
         0: .line 122
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 123
            aload 0 /* this */
            dup
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
            iconst_1
            iadd
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
         2: .line 122
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: org.glassfish.gmbal.impl.JMXRegistrationManager java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  public void resumeRegistration();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
         0: .line 135
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 136
            aload 0 /* this */
            dup
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
            iconst_1
            isub
            putfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
         2: .line 137
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
            ifne 13
         3: .line 138
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
            invokevirtual java.util.LinkedHashSet.iterator:()Ljava/util/Iterator;
            astore 3
            goto 11
      StackMap locals: org.glassfish.gmbal.impl.JMXRegistrationManager java.lang.Object top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.glassfish.gmbal.impl.MBeanImpl
            astore 2 /* mb */
        start local 2 // org.glassfish.gmbal.impl.MBeanImpl mb
         5: .line 140
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
            ifeq 7
         6: .line 141
            aload 2 /* mb */
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.register:()V
         7: .line 143
      StackMap locals: org.glassfish.gmbal.impl.JMXRegistrationManager java.lang.Object org.glassfish.gmbal.impl.MBeanImpl java.util.Iterator
      StackMap stack:
            aload 2 /* mb */
            iconst_0
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.suspended:(Z)V
         8: .line 144
            goto 11
      StackMap locals:
      StackMap stack: javax.management.JMException
         9: astore 4 /* ex */
        start local 4 // javax.management.JMException ex
        10: .line 145
            getstatic org.glassfish.gmbal.impl.Exceptions.self:Lorg/glassfish/gmbal/impl/Exceptions;
            aload 4 /* ex */
            aload 2 /* mb */
            invokeinterface org.glassfish.gmbal.impl.Exceptions.deferredRegistrationException:(Ljavax/management/JMException;Lorg/glassfish/gmbal/impl/MBeanImpl;)V
        end local 4 // javax.management.JMException ex
        end local 2 // org.glassfish.gmbal.impl.MBeanImpl mb
        11: .line 138
      StackMap locals: org.glassfish.gmbal.impl.JMXRegistrationManager java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        12: .line 149
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
            invokevirtual java.util.LinkedHashSet.clear:()V
        13: .line 135
      StackMap locals: org.glassfish.gmbal.impl.JMXRegistrationManager java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 152
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   18     0  this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
            5   11     2    mb  Lorg/glassfish/gmbal/impl/MBeanImpl;
           10   11     4    ex  Ljavax/management/JMException;
      Exception table:
        from    to  target  type
           5     8       9  Class javax.management.JMException
           1    14      15  any
          15    16      15  any

  public void register(org.glassfish.gmbal.impl.MBeanImpl);
    descriptor: (Lorg/glassfish/gmbal/impl/MBeanImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
        start local 1 // org.glassfish.gmbal.impl.MBeanImpl mb
         0: .line 168
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 169
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.suspendCount:I
            ifle 5
         2: .line 170
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
            aload 1 /* mb */
            invokevirtual java.util.LinkedHashSet.add:(Ljava/lang/Object;)Z
            pop
         3: .line 171
            aload 1 /* mb */
            iconst_1
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.suspended:(Z)V
         4: .line 172
            goto 7
         5: .line 173
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
            ifeq 7
         6: .line 174
            aload 1 /* mb */
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.register:()V
         7: .line 168
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 178
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.glassfish.gmbal.impl.MBeanImpl mb
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
            0   12     1    mb  Lorg/glassfish/gmbal/impl/MBeanImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
    MethodParameters:
      Name  Flags
      mb    

  public void unregister(org.glassfish.gmbal.impl.MBeanImpl);
    descriptor: (Lorg/glassfish/gmbal/impl/MBeanImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
        start local 1 // org.glassfish.gmbal.impl.MBeanImpl mb
         0: .line 193
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 194
            aload 1 /* mb */
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.suspended:()Z
            istore 3 /* wasSuspended */
        start local 3 // boolean wasSuspended
         2: .line 196
            iload 3 /* wasSuspended */
            ifeq 6
         3: .line 197
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.deferredRegistrations:Ljava/util/LinkedHashSet;
            aload 1 /* mb */
            invokevirtual java.util.LinkedHashSet.remove:(Ljava/lang/Object;)Z
            pop
         4: .line 198
            aload 1 /* mb */
            iconst_0
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.suspended:(Z)V
         5: .line 199
            goto 8
         6: .line 200
      StackMap locals: java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.gmbal.impl.JMXRegistrationManager.isJMXRegistrationEnabled:Z
            ifeq 8
         7: .line 201
            aload 1 /* mb */
            invokevirtual org.glassfish.gmbal.impl.MBeanImpl.unregister:()V
        end local 3 // boolean wasSuspended
         8: .line 193
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        12: .line 205
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.glassfish.gmbal.impl.MBeanImpl mb
        end local 0 // org.glassfish.gmbal.impl.JMXRegistrationManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lorg/glassfish/gmbal/impl/JMXRegistrationManager;
            0   13     1            mb  Lorg/glassfish/gmbal/impl/MBeanImpl;
            2    8     3  wasSuspended  Z
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any
    Exceptions:
      throws javax.management.InstanceNotFoundException, javax.management.MBeanRegistrationException
    MethodParameters:
      Name  Flags
      mb    
}
SourceFile: "JMXRegistrationManager.java"
NestMembers:
  org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener  org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener$1  org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener$2
InnerClasses:
  public abstract Callback = org.glassfish.external.amx.MBeanListener$Callback of org.glassfish.external.amx.MBeanListener
  private RootParentListener = org.glassfish.gmbal.impl.JMXRegistrationManager$RootParentListener of org.glassfish.gmbal.impl.JMXRegistrationManager