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 java.util.Map<javax.management.ObjectName, java.util.Set<com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter>> listenerMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    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 450
            iconst_0
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
         1: .line 451
            iconst_0
            newarray 10
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
         2: .line 461
            ldc Ljavax/management/NotificationBroadcaster;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         3: .line 460
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.broadcasterClass:Ljava/lang/String;
         4: .line 468
            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 467
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
         6: .line 468
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(javax.management.MBeanServer, java.util.Map, 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=5, 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 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 231
            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 454
            aload 0 /* this */
         3: .line 455
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
         4: .line 457
            aload 0 /* this */
            iconst_0
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
         5: .line 458
            aload 0 /* this */
            iconst_0
            newarray 10
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
         6: .line 64
            aload 0 /* this */
            aload 1 /* mbeanServer */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
         7: .line 65
            aload 0 /* this */
            aload 3 /* notifBuffer */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notifBuffer:Lcom/sun/jmx/remote/internal/NotificationBuffer;
         8: .line 66
            aload 0 /* this */
            aload 4 /* connectionId */
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
         9: .line 67
            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 68
            aload 0 /* this */
        11: .line 69
            aload 2 /* env */
        12: .line 70
            ldc "jmx.remote.x.check.notification.emission"
        13: .line 68
            invokestatic com.sun.jmx.remote.util.EnvHelp.computeBooleanFromString:(Ljava/util/Map;Ljava/lang/String;)Z
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
        14: .line 71
            aload 0 /* this */
        15: .line 72
            aload 2 /* env */
            ldc "com.sun.jmx.remote.notification.access.controller"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.jmx.remote.security.NotificationAccessController
        16: .line 71
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
        17: .line 73
            return
        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   18     0          this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   18     1   mbeanServer  Ljavax/management/MBeanServer;
            0   18     2           env  Ljava/util/Map;
            0   18     3   notifBuffer  Lcom/sun/jmx/remote/internal/NotificationBuffer;
            0   18     4  connectionId  Ljava/lang/String;
    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 79
            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 80
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "addNotificationListener"
         2: .line 81
            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 80
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
         5: .line 88
            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 89
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
            ifnull 12
         7: .line 90
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
         8: .line 91
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
         9: .line 92
            aload 1 /* name */
        10: .line 93
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
        11: .line 90
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.addNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
        12: .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
        13: .line 97
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
        14: .line 96
            istore 3 /* instanceOf */
        start local 3 // boolean instanceOf
        15: .line 103
            iload 3 /* instanceOf */
            ifne 23
        16: .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
        17: .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;
        18: .line 106
            ldc "NotificationBroadcaster "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 107
            ldc "object."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 104
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean instanceOf
        21: .line 109
      StackMap locals:
      StackMap stack: java.security.PrivilegedActionException
            astore 3 /* e */
        start local 3 // java.security.PrivilegedActionException e
        22: .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
        23: .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
        24: .line 116
            aload 1 /* name */
            astore 4 /* nn */
        start local 4 // javax.management.ObjectName nn
        25: .line 117
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
            ifnull 26
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 34
        26: .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;
        27: .line 120
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.getKeyPropertyList:()Ljava/util/Hashtable;
        28: .line 119
            invokestatic javax.management.ObjectName.getInstance:(Ljava/lang/String;Ljava/util/Hashtable;)Ljavax/management/ObjectName;
            astore 4 /* nn */
        29: .line 121
            goto 34
      StackMap locals:
      StackMap stack: javax.management.MalformedObjectNameException
        30: astore 5 /* mfoe */
        start local 5 // javax.management.MalformedObjectNameException mfoe
        31: .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
        32: .line 124
            aload 6 /* ioe */
            aload 5 /* mfoe */
            invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        33: .line 125
            aload 6 /* ioe */
            athrow
        end local 6 // java.io.IOException ioe
        end local 5 // javax.management.MalformedObjectNameException mfoe
        34: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 5
            monitorenter
        35: .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
        36: .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
        37: .line 134
            aload 7 /* set */
            ifnonnull 39
        38: .line 135
            aload 6 /* idaf */
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            astore 7 /* set */
            goto 42
        39: .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 41
        40: .line 138
            new java.util.HashSet
            dup
            aload 7 /* set */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 7 /* set */
        41: .line 139
      StackMap locals:
      StackMap stack:
            aload 7 /* set */
            aload 6 /* idaf */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        42: .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
        43: .line 129
            aload 5
            monitorexit
        44: goto 47
      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
        45: aload 5
            monitorexit
        46: athrow
        47: .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   48     0        this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   48     1        name  Ljavax/management/ObjectName;
            0   48     2      filter  Ljavax/management/NotificationFilter;
           15   21     3  instanceOf  Z
           22   23     3           e  Ljava/security/PrivilegedActionException;
           24   48     3          id  Ljava/lang/Integer;
           25   48     4          nn  Ljavax/management/ObjectName;
           31   34     5        mfoe  Ljavax/management/MalformedObjectNameException;
           32   34     6         ioe  Ljava/io/IOException;
           36   43     6        idaf  Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
           37   43     7         set  Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
      Exception table:
        from    to  target  type
          12    21      21  Class java.security.PrivilegedActionException
          26    29      30  Class javax.management.MalformedObjectNameException
          35    44      45  any
          45    46      45  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 12
         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;
         9: .line 164
            aload 1 /* name */
        10: .line 165
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
        11: .line 162
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.removeNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
        12: .line 168
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* re */
        start local 3 // java.lang.Exception re
        13: .line 169
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        14: goto 21
        15: .line 171
      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
        16: .line 172
            goto 20
      StackMap locals:
      StackMap stack: java.lang.Exception
        17: astore 5 /* e */
        start local 5 // java.lang.Exception e
        18: .line 175
            aload 3 /* re */
            ifnull 20
        19: .line 176
            aload 5 /* e */
            astore 3 /* re */
        end local 5 // java.lang.Exception e
        20: .line 169
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 4 /* i */
            aload 2 /* listenerIDs */
            arraylength
            if_icmplt 15
        end local 4 // int i
        22: .line 180
            aload 3 /* re */
            ifnull 24
        23: .line 181
            aload 3 /* re */
            athrow
        24: .line 183
      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   25     0         this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   25     1         name  Ljavax/management/ObjectName;
            0   25     2  listenerIDs  [Ljava/lang/Integer;
           13   25     3           re  Ljava/lang/Exception;
           14   22     4            i  I
           18   20     5            e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          15    16      17  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 191
            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 192
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "removeNotificationListener"
         2: .line 193
            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 192
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
         5: .line 198
            aload 1 /* name */
            ifnull 10
            aload 1 /* name */
            invokevirtual javax.management.ObjectName.isPattern:()Z
            ifne 10
         6: .line 199
            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 200
            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 201
            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 200
            invokespecial javax.management.InstanceNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 205
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 3
            monitorenter
        11: .line 208
            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 209
            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 210
            aload 4 /* set */
            ifnull 14
            aload 4 /* set */
            aload 5 /* idaf */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 15
        14: .line 211
      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 212
      StackMap locals:
      StackMap stack:
            aload 4 /* set */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 17
        16: .line 213
            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 215
      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 205
      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 217
      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 266
            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 267
            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 268
            lload 1 /* startSequenceNumber */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         3: .line 269
            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 270
            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 267
            invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
         6: .line 273
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* nr */
        start local 6 // javax.management.remote.NotificationResult nr
         7: .line 274
            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
         8: .line 276
            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;
         9: .line 277
            lload 1 /* startSequenceNumber */
        10: .line 278
            lload 7 /* t */
            iload 5 /* maxNotifications */
        11: .line 276
            invokeinterface com.sun.jmx.remote.internal.NotificationBuffer.fetchNotifications:(Lcom/sun/jmx/remote/internal/NotificationBufferFilter;JJI)Ljavax/management/remote/NotificationResult;
            astore 6 /* nr */
        12: .line 279
            goto 15
      StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder long long int javax.management.remote.NotificationResult long
      StackMap stack: java.lang.InterruptedException
        13: pop
        14: .line 280
            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 */
        15: .line 283
      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 17
        16: .line 284
            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 287
      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
            7   18     6                   nr  Ljavax/management/remote/NotificationResult;
            8   18     7                    t  J
      Exception table:
        from    to  target  type
           8    12      13  Class java.lang.InterruptedException
    MethodParameters:
                     Name  Flags
      startSequenceNumber  
      timeout              
      maxNotifications     

  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 291
            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 292
            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 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
            dup
            astore 1
            monitorenter
         3: .line 296
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
            ifeq 6
         4: .line 297
            aload 1
            monitorexit
         5: return
         6: .line 300
      StackMap locals: int[]
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
         7: .line 302
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            dup
            astore 2
            monitorenter
         8: .line 303
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         9: .line 302
            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 295
      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 307
      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 308
            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 310
      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 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 317
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
            dup
            astore 1
            monitorenter
         1: .line 318
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
            ifeq 3
         2: .line 319
            new java.io.IOException
            dup
            ldc "The connection has been terminated."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 317
      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 322
      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=5, locals=2, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ServerNotifForwarder this
         0: .line 325
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
            dup
            astore 1
            monitorenter
         1: .line 326
            new java.lang.Integer
            dup
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
            dup
            iconst_1
            iadd
            putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
            invokespecial java.lang.Integer.<init>:(I)V
            aload 1
            monitorexit
         2: areturn
         3: .line 325
      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 337
            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 338
            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 344
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         1: .line 345
            aload 3 /* sm */
            ifnull 16
         2: .line 346
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            astore 4 /* acc */
        start local 4 // java.security.AccessControlContext acc
         3: .line 347
            aconst_null
            astore 5 /* oi */
        start local 5 // javax.management.ObjectInstance oi
         4: .line 350
            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
         5: .line 349
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast javax.management.ObjectInstance
            astore 5 /* oi */
         6: .line 356
            goto 9
      StackMap locals: javax.management.MBeanServer javax.management.ObjectName java.lang.String java.lang.SecurityManager java.security.AccessControlContext javax.management.ObjectInstance
      StackMap stack: java.security.PrivilegedActionException
         7: astore 6 /* e */
        start local 6 // java.security.PrivilegedActionException e
         8: .line 357
            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
         9: .line 359
      StackMap locals:
      StackMap stack:
            aload 5 /* oi */
            invokevirtual javax.management.ObjectInstance.getClassName:()Ljava/lang/String;
            astore 6 /* classname */
        start local 6 // java.lang.String classname
        10: .line 360
            new javax.management.MBeanPermission
            dup
            aload 6 /* classname */
        11: .line 361
            aconst_null
        12: .line 362
            aload 1 /* name */
        13: .line 363
            aload 2 /* actions */
        14: .line 360
            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 364
            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 366
      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;
            4   16     5         oi  Ljavax/management/ObjectInstance;
            8    9     6          e  Ljava/security/PrivilegedActionException;
           10   16     6  classname  Ljava/lang/String;
           15   16     7       perm  Ljavax/management/MBeanPermission;
      Exception table:
        from    to  target  type
           4     6       7  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 374
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
            ifeq 2
         1: .line 375
            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 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
            ifnull 9
         3: .line 378
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
         4: .line 379
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
         5: .line 380
            aload 1 /* name */
         6: .line 381
            aload 2 /* tn */
            invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
         7: .line 382
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
         8: .line 378
            invokeinterface com.sun.jmx.remote.security.NotificationAccessController.fetchNotification:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/management/Notification;Ljavax/security/auth/Subject;)V
         9: .line 384
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        10: .line 385
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            pop
        11: .line 386
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
            ifeq 16
        12: .line 387
            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
        13: .line 388
            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;
        14: .line 389
            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;
        15: .line 387
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
        16: .line 391
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        17: .line 392
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        18: .line 393
            getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
            ifeq 23
        19: .line 394
            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
        20: .line 395
            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;
        21: .line 396
            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;
        22: .line 394
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
        23: .line 398
      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   24     0  this  Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
            0   24     1  name  Ljavax/management/ObjectName;
            0   24     2    tn  Ljavax/management/remote/TargetedNotification;
           18   24     3     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     9      10  Class java.lang.SecurityException
           0     9      17  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 407
            goto 2
         1: .line 408
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            checkcast java.security.PrivilegedActionException
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            astore 0 /* e */
         2: .line 407
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            instanceof java.security.PrivilegedActionException
            ifne 1
         3: .line 410
            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