public class com.sun.jmx.remote.internal.ServerNotifForwarder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.jmx.remote.internal.ServerNotifForwarder
  super_class: java.lang.Object
{
  private final com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter bufferFilter;
    descriptor: Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private javax.management.MBeanServer mbeanServer;
    descriptor: Ljavax/management/MBeanServer;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.String connectionId;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long connectionTimeout;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static int listenerCounter;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final int[] listenerCounterLock;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private com.sun.jmx.remote.internal.NotificationBuffer notifBuffer;
    descriptor: Lcom/sun/jmx/remote/internal/NotificationBuffer;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Map<javax.management.ObjectName, java.util.Set<com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter>> listenerMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljavax/management/ObjectName;Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;>;

  private boolean terminated;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final int[] terminationLock;
    descriptor: [I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final java.lang.String broadcasterClass;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final boolean checkNotificationEmission;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.jmx.remote.security.NotificationAccessController notificationAccessController;
    descriptor: Lcom/sun/jmx/remote/security/NotificationAccessController;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final com.sun.jmx.remote.util.ClassLogger logger;
    descriptor: Lcom/sun/jmx/remote/util/ClassLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 487
            iconst_0
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
         1: .line 488
            iconst_0
            newarray 10
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
         2: .line 498
            ldc Ljavax/management/NotificationBroadcaster;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         3: .line 497
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.broadcasterClass:Ljava/lang/String;
         4: .line 505
            new com.sun.jmx.remote.util.ClassLogger
            dup
            ldc "javax.management.remote.misc"
            ldc "ServerNotifForwarder"
            invokespecial com.sun.jmx.remote.util.ClassLogger.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         5: .line 504
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
         6: .line 505
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(javax.management.MBeanServer, java.util.Map<java.lang.String, ?>, com.sun.jmx.remote.internal.NotificationBuffer, java.lang.String);
    descriptor: (Ljavax/management/MBeanServer;Ljava/util/Map;Lcom/sun/jmx/remote/internal/NotificationBuffer;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.MBeanServer mbeanServer
        start local 2 // java.util.Map env
        start local 3 // com.sun.jmx.remote.internal.NotificationBuffer notifBuffer
        start local 4 // java.lang.String connectionId
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 229
            aload 0 /* this */
            new com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter
            dup
            aload 0 /* this */
            invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter.<init>:(Lcom/sun/jmx/remote/internal/ServerNotifForwarder;)V
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.bufferFilter:Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
         2: .line 491
            aload 0 /* this */
         3: .line 492
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
         4: .line 494
            aload 0 /* this */
            iconst_0
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
         5: .line 495
            aload 0 /* this */
            iconst_0
            newarray 10
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
         6: .line 66
            aload 0 /* this */
            aload 1 /* mbeanServer */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
         7: .line 67
            aload 0 /* this */
            aload 3 /* notifBuffer */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notifBuffer:Lcom/sun/jmx/remote/internal/NotificationBuffer;
         8: .line 68
            aload 0 /* this */
            aload 4 /* connectionId */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
         9: .line 69
            aload 0 /* this */
            aload 2 /* env */
            invokestatic com.sun.jmx.remote.util.EnvHelp.getServerConnectionTimeout:(Ljava/util/Map;)J
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionTimeout:J
        10: .line 71
            aload 2 /* env */
            ldc "jmx.remote.x.check.notification.emission"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* stringBoolean */
        start local 5 // java.lang.String stringBoolean
        11: .line 72
            aload 0 /* this */
            aload 5 /* stringBoolean */
            invokestatic com.sun.jmx.remote.util.EnvHelp.computeBooleanFromString:(Ljava/lang/String;)Z
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
        12: .line 73
            aload 0 /* this */
        13: .line 74
            aload 2 /* env */
            invokestatic com.sun.jmx.remote.util.EnvHelp.getNotificationAccessController:(Ljava/util/Map;)Lcom/sun/jmx/remote/security/NotificationAccessController;
        14: .line 73
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
        15: .line 75
            return
        end local 5 // java.lang.String stringBoolean
        end local 4 // java.lang.String connectionId
        end local 3 // com.sun.jmx.remote.internal.NotificationBuffer notifBuffer
        end local 2 // java.util.Map env
        end local 1 // javax.management.MBeanServer mbeanServer
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   16     1    mbeanServer  Ljavax/management/MBeanServer;
            0   16     2            env  Ljava/util/Map<Ljava/lang/String;*>;
            0   16     3    notifBuffer  Lcom/sun/jmx/remote/internal/NotificationBuffer;
            0   16     4   connectionId  Ljava/lang/String;
           11   16     5  stringBoolean  Ljava/lang/String;
    Signature: (Ljavax/management/MBeanServer;Ljava/util/Map<Ljava/lang/String;*>;Lcom/sun/jmx/remote/internal/NotificationBuffer;Ljava/lang/String;)V
    MethodParameters:
              Name  Flags
      mbeanServer   
      env           
      notifBuffer   
      connectionId  

  public java.lang.Integer addNotificationListener(javax.management.ObjectName, javax.management.NotificationFilter);
    descriptor: (Ljavax/management/ObjectName;Ljavax/management/NotificationFilter;)Ljava/lang/Integer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.ObjectName name
        start local 2 // javax.management.NotificationFilter filter
         0: .line 81
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 4
         1: .line 82
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "addNotificationListener"
         2: .line 83
            new java.lang.StringBuilder
            dup
            ldc "Add a listener at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 82
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
         5: .line 90
            aload 0 /* this */
            aload 1 /* name */
            ldc "addNotificationListener"
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
         6: .line 91
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
            ifnull 10
         7: .line 92
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
         8: .line 93
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
            aload 1 /* name */
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.getSubject:()Ljavax/security/auth/Subject;
         9: .line 92
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.addNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
        10: .line 98
      StackMap locals:
      StackMap stack:
            new com.sun.jmx.remote.internal.ServerNotifForwarder$1
            dup
            aload 0 /* this */
            aload 1 /* name */
            invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$1.<init>:(Lcom/sun/jmx/remote/internal/ServerNotifForwarder;Ljavax/management/ObjectName;)V
        11: .line 97
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
        12: .line 96
            istore 3 /* instanceOf */
        start local 3 // boolean instanceOf
        13: .line 103
            iload 3 /* instanceOf */
            ifne 21
        14: .line 104
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The specified MBean ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 105
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] is not a "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        16: .line 106
            ldc "NotificationBroadcaster "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 107
            ldc "object."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 104
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean instanceOf
        19: .line 109
      StackMap locals:
      StackMap stack: java.security.PrivilegedActionException
            astore 3 /* e */
        start local 3 // java.security.PrivilegedActionException e
        20: .line 110
            aload 3 /* e */
            invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.extractException:(Ljava/lang/Exception;)Ljava/lang/Exception;
            checkcast javax.management.InstanceNotFoundException
            athrow
        end local 3 // java.security.PrivilegedActionException e
        21: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.getListenerID:()Ljava/lang/Integer;
            astore 3 /* id */
        start local 3 // java.lang.Integer id
        22: .line 116
            aload 1 /* name */
            astore 4 /* nn */
        start local 4 // javax.management.ObjectName nn
        23: .line 117
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
            ifnull 24
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        24: .line 119
      StackMap locals: java.lang.Integer javax.management.ObjectName
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
            invokeinterface javax.management.MBeanServer.getDefaultDomain:()Ljava/lang/String;
        25: .line 120
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getKeyPropertyList:()Ljava/util/Hashtable;
        26: .line 119
            invokestatic javax.management.ObjectName.getInstance:(Ljava/lang/String;Ljava/util/Hashtable;)Ljavax/management/ObjectName;
            astore 4 /* nn */
        27: .line 121
            goto 32
      StackMap locals:
      StackMap stack: javax.management.MalformedObjectNameException
        28: astore 5 /* mfoe */
        start local 5 // javax.management.MalformedObjectNameException mfoe
        29: .line 123
            new java.io.IOException
            dup
            aload 5 /* mfoe */
            invokevirtual javax.management.MalformedObjectNameException.getMessage:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        30: .line 124
            aload 6 /* ioe */
            aload 5 /* mfoe */
            invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        31: .line 125
            aload 6 /* ioe */
            athrow
        end local 6 // java.io.IOException ioe
        end local 5 // javax.management.MalformedObjectNameException mfoe
        32: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 5
            monitorenter
        33: .line 130
            new com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
            dup
            aload 3 /* id */
            aload 2 /* filter */
            invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter.<init>:(Ljava/lang/Integer;Ljavax/management/NotificationFilter;)V
            astore 6 /* idaf */
        start local 6 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        34: .line 131
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            aload 4 /* nn */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 7 /* set */
        start local 7 // java.util.Set set
        35: .line 134
            aload 7 /* set */
            ifnonnull 37
        36: .line 135
            aload 6 /* idaf */
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            astore 7 /* set */
            goto 40
        37: .line 137
      StackMap locals: java.util.Map com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter java.util.Set
      StackMap stack:
            aload 7 /* set */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 39
        38: .line 138
            new java.util.HashSet
            dup
            aload 7 /* set */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 7 /* set */
        39: .line 139
      StackMap locals:
      StackMap stack:
            aload 7 /* set */
            aload 6 /* idaf */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        40: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            aload 4 /* nn */
            aload 7 /* set */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // java.util.Set set
        end local 6 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        41: .line 129
            aload 5
            monitorexit
        42: goto 45
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.ObjectName javax.management.NotificationFilter java.lang.Integer javax.management.ObjectName java.util.Map
      StackMap stack: java.lang.Throwable
        43: aload 5
            monitorexit
        44: athrow
        45: .line 144
      StackMap locals:
      StackMap stack:
            aload 3 /* id */
            areturn
        end local 4 // javax.management.ObjectName nn
        end local 3 // java.lang.Integer id
        end local 2 // javax.management.NotificationFilter filter
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   46     0        this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   46     1        name  Ljavax/management/ObjectName;
            0   46     2      filter  Ljavax/management/NotificationFilter;
           13   19     3  instanceOf  Z
           20   21     3           e  Ljava/security/PrivilegedActionException;
           22   46     3          id  Ljava/lang/Integer;
           23   46     4          nn  Ljavax/management/ObjectName;
           29   32     5        mfoe  Ljavax/management/MalformedObjectNameException;
           30   32     6         ioe  Ljava/io/IOException;
           34   41     6        idaf  Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
           35   41     7         set  Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
      Exception table:
        from    to  target  type
          10    19      19  Class java.security.PrivilegedActionException
          24    27      28  Class javax.management.MalformedObjectNameException
          33    42      43  any
          43    44      43  any
    Exceptions:
      throws javax.management.InstanceNotFoundException, java.io.IOException
    MethodParameters:
        Name  Flags
      name    final
      filter  final

  public void removeNotificationListener(javax.management.ObjectName, java.lang.Integer[]);
    descriptor: (Ljavax/management/ObjectName;[Ljava/lang/Integer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.ObjectName name
        start local 2 // java.lang.Integer[] listenerIDs
         0: .line 151
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 4
         1: .line 152
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "removeNotificationListener"
         2: .line 153
            new java.lang.StringBuilder
            dup
            ldc "Remove some listeners from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 152
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
         5: .line 160
            aload 0 /* this */
            aload 1 /* name */
            ldc "removeNotificationListener"
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
         6: .line 161
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
            ifnull 10
         7: .line 162
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
         8: .line 163
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
            aload 1 /* name */
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.getSubject:()Ljavax/security/auth/Subject;
         9: .line 162
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.removeNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
        10: .line 166
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* re */
        start local 3 // java.lang.Exception re
        11: .line 167
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        12: goto 19
        13: .line 169
      StackMap locals: java.lang.Exception int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* listenerIDs */
            iload 4 /* i */
            aaload
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.removeNotificationListener:(Ljavax/management/ObjectName;Ljava/lang/Integer;)V
        14: .line 170
            goto 18
      StackMap locals:
      StackMap stack: java.lang.Exception
        15: astore 5 /* e */
        start local 5 // java.lang.Exception e
        16: .line 173
            aload 3 /* re */
            ifnull 18
        17: .line 174
            aload 5 /* e */
            astore 3 /* re */
        end local 5 // java.lang.Exception e
        18: .line 167
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 4 /* i */
            aload 2 /* listenerIDs */
            arraylength
            if_icmplt 13
        end local 4 // int i
        20: .line 178
            aload 3 /* re */
            ifnull 22
        21: .line 179
            aload 3 /* re */
            athrow
        22: .line 181
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Exception re
        end local 2 // java.lang.Integer[] listenerIDs
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   23     1         name  Ljavax/management/ObjectName;
            0   23     2  listenerIDs  [Ljava/lang/Integer;
           11   23     3           re  Ljava/lang/Exception;
           12   20     4            i  I
           16   18     5            e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          13    14      15  Class java.lang.Exception
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
             Name  Flags
      name         
      listenerIDs  

  public void removeNotificationListener(javax.management.ObjectName, java.lang.Integer);
    descriptor: (Ljavax/management/ObjectName;Ljava/lang/Integer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.ObjectName name
        start local 2 // java.lang.Integer listenerID
         0: .line 189
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 4
         1: .line 190
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "removeNotificationListener"
         2: .line 191
            new java.lang.StringBuilder
            dup
            ldc "Remove the listener "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* listenerID */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " from "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 190
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
         5: .line 196
            aload 1 /* name */
            ifnull 10
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.isPattern:()Z
            ifne 10
         6: .line 197
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
            aload 1 /* name */
            invokeinterface javax.management.MBeanServer.isRegistered:(Ljavax/management/ObjectName;)Z
            ifne 10
         7: .line 198
            new javax.management.InstanceNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The MBean "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         8: .line 199
            ldc " is not registered."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 198
            invokespecial javax.management.InstanceNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 3
            monitorenter
        11: .line 206
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 4 /* set */
        start local 4 // java.util.Set set
        12: .line 207
            new com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
            dup
            aload 2 /* listenerID */
            aconst_null
            invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter.<init>:(Ljava/lang/Integer;Ljavax/management/NotificationFilter;)V
            astore 5 /* idaf */
        start local 5 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        13: .line 208
            aload 4 /* set */
            ifnull 14
            aload 4 /* set */
            aload 5 /* idaf */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 15
        14: .line 209
      StackMap locals: java.util.Map java.util.Set com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
      StackMap stack:
            new javax.management.ListenerNotFoundException
            dup
            ldc "Listener not found"
            invokespecial javax.management.ListenerNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 210
      StackMap locals:
      StackMap stack:
            aload 4 /* set */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 17
        16: .line 211
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
            goto 18
        17: .line 213
      StackMap locals:
      StackMap stack:
            aload 4 /* set */
            aload 5 /* idaf */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        end local 5 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        end local 4 // java.util.Set set
        18: .line 203
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        19: goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: aload 3
            monitorexit
        21: athrow
        22: .line 215
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Integer listenerID
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   23     1        name  Ljavax/management/ObjectName;
            0   23     2  listenerID  Ljava/lang/Integer;
           12   18     4         set  Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
           13   18     5        idaf  Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
      Exception table:
        from    to  target  type
          11    19      20  any
          20    21      20  any
    Exceptions:
      throws javax.management.InstanceNotFoundException, javax.management.ListenerNotFoundException, java.io.IOException
    MethodParameters:
            Name  Flags
      name        
      listenerID  

  public javax.management.remote.NotificationResult fetchNotifs(long, long, int);
    descriptor: (JJI)Ljavax/management/remote/NotificationResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // long startSequenceNumber
        start local 3 // long timeout
        start local 5 // int maxNotifications
         0: .line 264
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 6
         1: .line 265
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "fetchNotifs"
            new java.lang.StringBuilder
            dup
            ldc "Fetching notifications, the startSequenceNumber is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 266
            lload 1 /* startSequenceNumber */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         3: .line 267
            ldc ", the timeout is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 3 /* timeout */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         4: .line 268
            ldc ", the maxNotifications is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 5 /* maxNotifications */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 265
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         6: .line 272
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionTimeout:J
            lload 3 /* timeout */
            invokestatic java.lang.Math.min:(JJ)J
            lstore 7 /* t */
        start local 7 // long t
         7: .line 274
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notifBuffer:Lcom/sun/jmx/remote/internal/NotificationBuffer;
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.bufferFilter:Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
         8: .line 275
            lload 1 /* startSequenceNumber */
         9: .line 276
            lload 7 /* t */
            iload 5 /* maxNotifications */
        10: .line 274
            invokeinterface com.sun.jmx.remote.internal.NotificationBuffer.fetchNotifications:(Lcom/sun/jmx/remote/internal/NotificationBufferFilter;JJI)Ljavax/management/remote/NotificationResult;
            astore 6 /* nr */
        start local 6 // javax.management.remote.NotificationResult nr
        11: .line 277
            aload 0 /* this */
            aload 6 /* nr */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.snoopOnUnregister:(Ljavax/management/remote/NotificationResult;)V
        12: .line 278
            goto 15
        end local 6 // javax.management.remote.NotificationResult nr
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder long long int top long
      StackMap stack: java.lang.InterruptedException
        13: pop
        14: .line 279
            new javax.management.remote.NotificationResult
            dup
            lconst_0
            lconst_0
            iconst_0
            anewarray javax.management.remote.TargetedNotification
            invokespecial javax.management.remote.NotificationResult.<init>:(JJ[Ljavax/management/remote/TargetedNotification;)V
            astore 6 /* nr */
        start local 6 // javax.management.remote.NotificationResult nr
        15: .line 282
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder long long int javax.management.remote.NotificationResult long
      StackMap stack:
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 17
        16: .line 283
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "fetchNotifs"
            new java.lang.StringBuilder
            dup
            ldc "Forwarding the notifs: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* nr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
        17: .line 286
      StackMap locals:
      StackMap stack:
            aload 6 /* nr */
            areturn
        end local 7 // long t
        end local 6 // javax.management.remote.NotificationResult nr
        end local 5 // int maxNotifications
        end local 3 // long timeout
        end local 1 // long startSequenceNumber
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   18     0                 this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   18     1  startSequenceNumber  J
            0   18     3              timeout  J
            0   18     5     maxNotifications  I
           11   13     6                   nr  Ljavax/management/remote/NotificationResult;
           15   18     6                   nr  Ljavax/management/remote/NotificationResult;
            7   18     7                    t  J
      Exception table:
        from    to  target  type
           7    12      13  Class java.lang.InterruptedException
    MethodParameters:
                     Name  Flags
      startSequenceNumber  
      timeout              
      maxNotifications     

  private void snoopOnUnregister(javax.management.remote.NotificationResult);
    descriptor: (Ljavax/management/remote/NotificationResult;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=14, args_size=2
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.remote.NotificationResult nr
         0: .line 294
            aconst_null
            astore 2 /* copy */
        start local 2 // java.util.List copy
         1: .line 295
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 3
            monitorenter
         2: .line 296
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            getstatic javax.management.MBeanServerDelegate.DELEGATE_NAME:Ljavax/management/ObjectName;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 4 /* delegateSet */
        start local 4 // java.util.Set delegateSet
         3: .line 297
            aload 4 /* delegateSet */
            ifnull 4
            aload 4 /* delegateSet */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 6
         4: .line 298
      StackMap locals: java.util.List java.util.Map java.util.Set
      StackMap stack:
            aload 3
            monitorexit
         5: return
         6: .line 300
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 4 /* delegateSet */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 2 /* copy */
        end local 4 // java.util.Set delegateSet
         7: .line 295
            aload 3
            monitorexit
         8: goto 11
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List java.util.Map
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        11: .line 303
      StackMap locals:
      StackMap stack:
            aload 1 /* nr */
            invokevirtual javax.management.remote.NotificationResult.getTargetedNotifications:()[Ljavax/management/remote/TargetedNotification;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 30
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List top int int javax.management.remote.TargetedNotification[]
      StackMap stack:
        12: aload 6
            iload 4
            aaload
            astore 3 /* tn */
        start local 3 // javax.management.remote.TargetedNotification tn
        13: .line 304
            aload 3 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getListenerID:()Ljava/lang/Integer;
            astore 7 /* id */
        start local 7 // java.lang.Integer id
        14: .line 305
            aload 2 /* copy */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 28
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List javax.management.remote.TargetedNotification int int javax.management.remote.TargetedNotification[] java.lang.Integer top java.util.Iterator
      StackMap stack:
        15: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
            astore 8 /* idaf */
        start local 8 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        16: .line 306
            aload 8 /* idaf */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter.id:Ljava/lang/Integer;
            aload 7 /* id */
            if_acmpne 28
        17: .line 308
            aload 3 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
            astore 10 /* n */
        start local 10 // javax.management.Notification n
        18: .line 309
            aload 10 /* n */
            instanceof javax.management.MBeanServerNotification
            ifeq 28
        19: .line 310
            aload 10 /* n */
            invokevirtual javax.management.Notification.getType:()Ljava/lang/String;
            ldc "JMX.mbean.unregistered"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        20: .line 311
            aload 10 /* n */
            checkcast javax.management.MBeanServerNotification
            astore 11 /* mbsn */
        start local 11 // javax.management.MBeanServerNotification mbsn
        21: .line 312
            aload 11 /* mbsn */
            invokevirtual javax.management.MBeanServerNotification.getMBeanName:()Ljavax/management/ObjectName;
            astore 12 /* gone */
        start local 12 // javax.management.ObjectName gone
        22: .line 313
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 13
            monitorenter
        23: .line 314
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            aload 12 /* gone */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 313
            aload 13
            monitorexit
        25: goto 28
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List javax.management.remote.TargetedNotification int int javax.management.remote.TargetedNotification[] java.lang.Integer com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter java.util.Iterator javax.management.Notification javax.management.MBeanServerNotification javax.management.ObjectName java.util.Map
      StackMap stack: java.lang.Throwable
        26: aload 13
            monitorexit
        27: athrow
        end local 12 // javax.management.ObjectName gone
        end local 11 // javax.management.MBeanServerNotification mbsn
        end local 10 // javax.management.Notification n
        end local 8 // com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter idaf
        28: .line 305
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List javax.management.remote.TargetedNotification int int javax.management.remote.TargetedNotification[] java.lang.Integer top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 7 // java.lang.Integer id
        end local 3 // javax.management.remote.TargetedNotification tn
        29: .line 303
            iinc 4 1
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.remote.NotificationResult java.util.List top int int javax.management.remote.TargetedNotification[]
      StackMap stack:
        30: iload 4
            iload 5
            if_icmplt 12
        31: .line 320
            return
        end local 2 // java.util.List copy
        end local 1 // javax.management.remote.NotificationResult nr
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   32     1           nr  Ljavax/management/remote/NotificationResult;
            1   32     2         copy  Ljava/util/List<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
            3    7     4  delegateSet  Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
           13   29     3           tn  Ljavax/management/remote/TargetedNotification;
           14   29     7           id  Ljava/lang/Integer;
           16   28     8         idaf  Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
           18   28    10            n  Ljavax/management/Notification;
           21   28    11         mbsn  Ljavax/management/MBeanServerNotification;
           22   28    12         gone  Ljavax/management/ObjectName;
      Exception table:
        from    to  target  type
           2     5       9  any
           6     8       9  any
           9    10       9  any
          23    25      26  any
          26    27      26  any
    MethodParameters:
      Name  Flags
      nr    

  public void terminate();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
         0: .line 323
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 2
         1: .line 324
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "terminate"
            ldc "Be called."
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
            dup
            astore 1
            monitorenter
         3: .line 328
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
            ifeq 6
         4: .line 329
            aload 1
            monitorexit
         5: return
         6: .line 332
      StackMap locals: int[]
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
         7: .line 334
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 2
            monitorenter
         8: .line 335
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         9: .line 334
            aload 2
            monitorexit
        10: goto 13
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder int[] java.util.Map
      StackMap stack: java.lang.Throwable
        11: aload 2
            monitorexit
        12: athrow
        13: .line 327
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 339
      StackMap locals:
      StackMap stack:
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
            ifeq 19
        18: .line 340
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "terminate"
            ldc "Terminated."
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
        19: .line 342
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
      Exception table:
        from    to  target  type
           8    10      11  any
          11    12      11  any
           3     5      15  any
           6    14      15  any
          15    16      15  any

  private javax.security.auth.Subject getSubject();
    descriptor: ()Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
         0: .line 349
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
            areturn
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;

  private void checkState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
         0: .line 353
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
            dup
            astore 1
            monitorenter
         1: .line 354
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
            ifeq 3
         2: .line 355
            new java.io.IOException
            dup
            ldc "The connection has been terminated."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 353
      StackMap locals: int[]
      StackMap stack:
            aload 1
            monitorexit
         4: goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 358
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    Exceptions:
      throws java.io.IOException

  private java.lang.Integer getListenerID();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
         0: .line 361
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
            dup
            astore 1
            monitorenter
         1: .line 362
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
            dup
            iconst_1
            iadd
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1
            monitorexit
         2: areturn
         3: .line 361
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder int[]
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public final void checkMBeanPermission(javax.management.ObjectName, java.lang.String);
    descriptor: (Ljavax/management/ObjectName;Ljava/lang/String;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.ObjectName name
        start local 2 // java.lang.String actions
         0: .line 373
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
            aload 1 /* name */
            aload 2 /* actions */
            invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/MBeanServer;Ljavax/management/ObjectName;Ljava/lang/String;)V
         1: .line 374
            return
        end local 2 // java.lang.String actions
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0    2     1     name  Ljavax/management/ObjectName;
            0    2     2  actions  Ljava/lang/String;
    Exceptions:
      throws javax.management.InstanceNotFoundException, java.lang.SecurityException
    MethodParameters:
         Name  Flags
      name     final
      actions  final

  static void checkMBeanPermission(javax.management.MBeanServer, javax.management.ObjectName, java.lang.String);
    descriptor: (Ljavax/management/MBeanServer;Ljavax/management/ObjectName;Ljava/lang/String;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // javax.management.MBeanServer mbs
        start local 1 // javax.management.ObjectName name
        start local 2 // java.lang.String actions
         0: .line 380
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         1: .line 381
            aload 3 /* sm */
            ifnull 16
         2: .line 382
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            astore 4 /* acc */
        start local 4 // java.security.AccessControlContext acc
         3: .line 386
            new com.sun.jmx.remote.internal.ServerNotifForwarder$2
            dup
            aload 0 /* mbs */
            aload 1 /* name */
            invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$2.<init>:(Ljavax/management/MBeanServer;Ljavax/management/ObjectName;)V
         4: .line 385
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast javax.management.ObjectInstance
            astore 5 /* oi */
        start local 5 // javax.management.ObjectInstance oi
         5: .line 392
            goto 8
        end local 5 // javax.management.ObjectInstance oi
      StackMap locals: javax.management.MBeanServer javax.management.ObjectName java.lang.String java.lang.SecurityManager java.security.AccessControlContext
      StackMap stack: java.security.PrivilegedActionException
         6: astore 6 /* e */
        start local 6 // java.security.PrivilegedActionException e
         7: .line 393
            aload 6 /* e */
            invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.extractException:(Ljava/lang/Exception;)Ljava/lang/Exception;
            checkcast javax.management.InstanceNotFoundException
            athrow
        end local 6 // java.security.PrivilegedActionException e
        start local 5 // javax.management.ObjectInstance oi
         8: .line 395
      StackMap locals: javax.management.ObjectInstance
      StackMap stack:
            aload 5 /* oi */
            invokevirtual javax.management.ObjectInstance.getClassName:()Ljava/lang/String;
            astore 6 /* classname */
        start local 6 // java.lang.String classname
         9: .line 396
            new javax.management.MBeanPermission
            dup
        10: .line 397
            aload 6 /* classname */
        11: .line 398
            aconst_null
        12: .line 399
            aload 1 /* name */
        13: .line 400
            aload 2 /* actions */
        14: .line 396
            invokespecial javax.management.MBeanPermission.<init>:(Ljava/lang/String;Ljava/lang/String;Ljavax/management/ObjectName;Ljava/lang/String;)V
            astore 7 /* perm */
        start local 7 // javax.management.MBeanPermission perm
        15: .line 401
            aload 3 /* sm */
            aload 7 /* perm */
            aload 4 /* acc */
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
        end local 7 // javax.management.MBeanPermission perm
        end local 6 // java.lang.String classname
        end local 5 // javax.management.ObjectInstance oi
        end local 4 // java.security.AccessControlContext acc
        16: .line 403
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.SecurityManager sm
        end local 2 // java.lang.String actions
        end local 1 // javax.management.ObjectName name
        end local 0 // javax.management.MBeanServer mbs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0        mbs  Ljavax/management/MBeanServer;
            0   17     1       name  Ljavax/management/ObjectName;
            0   17     2    actions  Ljava/lang/String;
            1   17     3         sm  Ljava/lang/SecurityManager;
            3   16     4        acc  Ljava/security/AccessControlContext;
            5    6     5         oi  Ljavax/management/ObjectInstance;
            8   16     5         oi  Ljavax/management/ObjectInstance;
            7    8     6          e  Ljava/security/PrivilegedActionException;
            9   16     6  classname  Ljava/lang/String;
           15   16     7       perm  Ljavax/management/MBeanPermission;
      Exception table:
        from    to  target  type
           3     5       6  Class java.security.PrivilegedActionException
    Exceptions:
      throws javax.management.InstanceNotFoundException, java.lang.SecurityException
    MethodParameters:
         Name  Flags
      mbs      final
      name     final
      actions  final

  private boolean allowNotificationEmission(javax.management.ObjectName, javax.management.remote.TargetedNotification);
    descriptor: (Ljavax/management/ObjectName;Ljavax/management/remote/TargetedNotification;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
        start local 1 // javax.management.ObjectName name
        start local 2 // javax.management.remote.TargetedNotification tn
         0: .line 411
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
            ifeq 2
         1: .line 412
            aload 0 /* this */
            aload 1 /* name */
            ldc "addNotificationListener"
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
         2: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
            ifnull 6
         3: .line 415
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
         4: .line 416
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
            aload 1 /* name */
            aload 2 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.getSubject:()Ljavax/security/auth/Subject;
         5: .line 415
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.fetchNotification:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/management/Notification;Ljavax/security/auth/Subject;)V
         6: .line 418
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         7: .line 419
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            pop
         8: .line 420
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
            ifeq 13
         9: .line 421
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "fetchNotifs"
            new java.lang.StringBuilder
            dup
            ldc "Notification "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 422
            aload 2 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " not forwarded: the "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 423
            ldc "caller didn't have the required access rights"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 421
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
        13: .line 425
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        14: .line 426
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        15: .line 427
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
            ifeq 20
        16: .line 428
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "fetchNotifs"
            new java.lang.StringBuilder
            dup
            ldc "Notification "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 429
            aload 2 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " not forwarded: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 430
            ldc "got an unexpected exception: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 428
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
        20: .line 432
      StackMap locals: java.lang.Exception
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // java.lang.Exception e
        end local 2 // javax.management.remote.TargetedNotification tn
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   21     1  name  Ljavax/management/ObjectName;
            0   21     2    tn  Ljavax/management/remote/TargetedNotification;
           15   21     3     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     6       7  Class java.lang.SecurityException
           0     6      14  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      name  
      tn    

  private static java.lang.Exception extractException(java.lang.Exception);
    descriptor: (Ljava/lang/Exception;)Ljava/lang/Exception;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Exception e
         0: .line 441
            goto 2
         1: .line 442
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            checkcast java.security.PrivilegedActionException
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            astore 0 /* e */
         2: .line 441
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            instanceof java.security.PrivilegedActionException
            ifne 1
         3: .line 444
            aload 0 /* e */
            areturn
        end local 0 // java.lang.Exception e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     e  Ljava/lang/Exception;
    MethodParameters:
      Name  Flags
      e     
}
SourceFile: "ServerNotifForwarder.java"
NestMembers:
  com.sun.jmx.remote.internal.ServerNotifForwarder$1  com.sun.jmx.remote.internal.ServerNotifForwarder$2  com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter  com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter
InnerClasses:
  com.sun.jmx.remote.internal.ServerNotifForwarder$1
  com.sun.jmx.remote.internal.ServerNotifForwarder$2
  private IdAndFilter = com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter of com.sun.jmx.remote.internal.ServerNotifForwarder
  final NotifForwarderBufferFilter = com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter of com.sun.jmx.remote.internal.ServerNotifForwarder