public class com.sun.jmx.remote.security.MBeanServerFileAccessController extends com.sun.jmx.remote.security.MBeanServerAccessController
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.jmx.remote.security.MBeanServerFileAccessController
  super_class: com.sun.jmx.remote.security.MBeanServerAccessController
{
  static final java.lang.String READONLY;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "readonly"

  static final java.lang.String READWRITE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "readwrite"

  static final java.lang.String CREATE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "create"

  static final java.lang.String UNREGISTER;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "unregister"

  private java.util.Map<java.lang.String, com.sun.jmx.remote.security.MBeanServerFileAccessController$Access> accessMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;>;

  private java.util.Properties originalProps;
    descriptor: Ljava/util/Properties;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String accessFileName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$com$sun$jmx$remote$security$MBeanServerFileAccessController$AccessType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.lang.String accessFileName
         0: .line 131
            aload 0 /* this */
            invokespecial com.sun.jmx.remote.security.MBeanServerAccessController.<init>:()V
         1: .line 132
            aload 0 /* this */
            aload 1 /* accessFileName */
            putfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessFileName:Ljava/lang/String;
         2: .line 133
            aload 1 /* accessFileName */
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController.propertiesFromFile:(Ljava/lang/String;)Ljava/util/Properties;
            astore 2 /* props */
        start local 2 // java.util.Properties props
         3: .line 134
            aload 0 /* this */
            aload 2 /* props */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.parseProperties:(Ljava/util/Properties;)V
         4: .line 135
            return
        end local 2 // java.util.Properties props
        end local 1 // java.lang.String accessFileName
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    5     1  accessFileName  Ljava/lang/String;
            3    5     2           props  Ljava/util/Properties;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      accessFileName  

  public void <init>(java.lang.String, javax.management.MBeanServer);
    descriptor: (Ljava/lang/String;Ljavax/management/MBeanServer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.lang.String accessFileName
        start local 2 // javax.management.MBeanServer mbs
         0: .line 159
            aload 0 /* this */
            aload 1 /* accessFileName */
            invokespecial com.sun.jmx.remote.security.MBeanServerFileAccessController.<init>:(Ljava/lang/String;)V
         1: .line 160
            aload 0 /* this */
            aload 2 /* mbs */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.setMBeanServer:(Ljavax/management/MBeanServer;)V
         2: .line 161
            return
        end local 2 // javax.management.MBeanServer mbs
        end local 1 // java.lang.String accessFileName
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    3     1  accessFileName  Ljava/lang/String;
            0    3     2             mbs  Ljavax/management/MBeanServer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      accessFileName  
      mbs             

  public void <init>(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.util.Properties accessFileProps
         0: .line 187
            aload 0 /* this */
            invokespecial com.sun.jmx.remote.security.MBeanServerAccessController.<init>:()V
         1: .line 188
            aload 1 /* accessFileProps */
            ifnonnull 3
         2: .line 189
            new java.lang.IllegalArgumentException
            dup
            ldc "Null properties"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 190
      StackMap locals: com.sun.jmx.remote.security.MBeanServerFileAccessController java.util.Properties
      StackMap stack:
            aload 0 /* this */
            aload 1 /* accessFileProps */
            putfield com.sun.jmx.remote.security.MBeanServerFileAccessController.originalProps:Ljava/util/Properties;
         4: .line 191
            aload 0 /* this */
            aload 1 /* accessFileProps */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.parseProperties:(Ljava/util/Properties;)V
         5: .line 192
            return
        end local 1 // java.util.Properties accessFileProps
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    6     1  accessFileProps  Ljava/util/Properties;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      accessFileProps  

  public void <init>(java.util.Properties, javax.management.MBeanServer);
    descriptor: (Ljava/util/Properties;Ljavax/management/MBeanServer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.util.Properties accessFileProps
        start local 2 // javax.management.MBeanServer mbs
         0: .line 221
            aload 0 /* this */
            aload 1 /* accessFileProps */
            invokespecial com.sun.jmx.remote.security.MBeanServerFileAccessController.<init>:(Ljava/util/Properties;)V
         1: .line 222
            aload 0 /* this */
            aload 2 /* mbs */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.setMBeanServer:(Ljavax/management/MBeanServer;)V
         2: .line 223
            return
        end local 2 // javax.management.MBeanServer mbs
        end local 1 // java.util.Properties accessFileProps
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    3     1  accessFileProps  Ljava/util/Properties;
            0    3     2              mbs  Ljavax/management/MBeanServer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      accessFileProps  
      mbs              

  public void checkRead();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
         0: .line 231
            aload 0 /* this */
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.READ:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            aconst_null
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;Ljava/lang/String;)V
         1: .line 232
            return
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;

  public void checkWrite();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
         0: .line 240
            aload 0 /* this */
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.WRITE:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            aconst_null
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;Ljava/lang/String;)V
         1: .line 241
            return
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;

  public void checkCreate(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.lang.String className
         0: .line 249
            aload 0 /* this */
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.CREATE:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            aload 1 /* className */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;Ljava/lang/String;)V
         1: .line 250
            return
        end local 1 // java.lang.String className
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    2     1  className  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      className  

  public void checkUnregister(javax.management.ObjectName);
    descriptor: (Ljavax/management/ObjectName;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // javax.management.ObjectName name
         0: .line 258
            aload 0 /* this */
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.UNREGISTER:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            aconst_null
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;Ljava/lang/String;)V
         1: .line 259
            return
        end local 1 // javax.management.ObjectName name
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    2     1  name  Ljavax/management/ObjectName;
    MethodParameters:
      Name  Flags
      name  

  public synchronized void refresh();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
         0: .line 285
            aload 0 /* this */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessFileName:Ljava/lang/String;
            ifnonnull 3
         1: .line 286
            aload 0 /* this */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController.originalProps:Ljava/util/Properties;
            astore 1 /* props */
        start local 1 // java.util.Properties props
         2: goto 4
        end local 1 // java.util.Properties props
         3: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessFileName:Ljava/lang/String;
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController.propertiesFromFile:(Ljava/lang/String;)Ljava/util/Properties;
            astore 1 /* props */
        start local 1 // java.util.Properties props
         4: .line 289
      StackMap locals: java.util.Properties
      StackMap stack:
            aload 0 /* this */
            aload 1 /* props */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController.parseProperties:(Ljava/util/Properties;)V
         5: .line 290
            return
        end local 1 // java.util.Properties props
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            2    3     1  props  Ljava/util/Properties;
            4    6     1  props  Ljava/util/Properties;
    Exceptions:
      throws java.io.IOException

  private static java.util.Properties propertiesFromFile(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Properties;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.String fname
         0: .line 294
            new java.io.FileInputStream
            dup
            aload 0 /* fname */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 1 /* fin */
        start local 1 // java.io.FileInputStream fin
         1: .line 296
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 2 /* p */
        start local 2 // java.util.Properties p
         2: .line 297
            aload 2 /* p */
            aload 1 /* fin */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         3: .line 298
            aload 2 /* p */
            astore 4
         4: .line 300
            aload 1 /* fin */
            invokevirtual java.io.FileInputStream.close:()V
         5: .line 298
            aload 4
            areturn
        end local 2 // java.util.Properties p
         6: .line 299
      StackMap locals: java.lang.String java.io.FileInputStream
      StackMap stack: java.lang.Throwable
            astore 3
         7: .line 300
            aload 1 /* fin */
            invokevirtual java.io.FileInputStream.close:()V
         8: .line 301
            aload 3
            athrow
        end local 1 // java.io.FileInputStream fin
        end local 0 // java.lang.String fname
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0  fname  Ljava/lang/String;
            1    9     1    fin  Ljava/io/FileInputStream;
            2    6     2      p  Ljava/util/Properties;
      Exception table:
        from    to  target  type
           1     4       6  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fname  

  private synchronized void checkAccess(com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType, java.lang.String);
    descriptor: (Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;Ljava/lang/String;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType requiredAccess
        start local 2 // java.lang.String arg
         0: .line 305
            invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
            astore 3 /* acc */
        start local 3 // java.security.AccessControlContext acc
         1: .line 307
            new com.sun.jmx.remote.security.MBeanServerFileAccessController$1
            dup
            aload 0 /* this */
            aload 3 /* acc */
            invokespecial com.sun.jmx.remote.security.MBeanServerFileAccessController$1.<init>:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;Ljava/security/AccessControlContext;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast javax.security.auth.Subject
         2: .line 306
            astore 4 /* s */
        start local 4 // javax.security.auth.Subject s
         3: .line 312
            aload 4 /* s */
            ifnonnull 4
            return
         4: .line 313
      StackMap locals: java.security.AccessControlContext javax.security.auth.Subject
      StackMap stack:
            aload 4 /* s */
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 5 /* principals */
        start local 5 // java.util.Set principals
         5: .line 314
            aconst_null
            astore 6 /* newPropertyValue */
        start local 6 // java.lang.String newPropertyValue
         6: .line 315
            aload 5 /* principals */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7 /* i */
        start local 7 // java.util.Iterator i
         7: goto 27
         8: .line 316
      StackMap locals: java.util.Set java.lang.String java.util.Iterator
      StackMap stack:
            aload 7 /* i */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.Principal
            astore 8 /* p */
        start local 8 // java.security.Principal p
         9: .line 317
            aload 0 /* this */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessMap:Ljava/util/Map;
            aload 8 /* p */
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.jmx.remote.security.MBeanServerFileAccessController$Access
            astore 9 /* access */
        start local 9 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
        10: .line 318
            aload 9 /* access */
            ifnull 27
        11: .line 320
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController.$SWITCH_TABLE$com$sun$jmx$remote$security$MBeanServerFileAccessController$AccessType:()[I
            aload 1 /* requiredAccess */
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 12
                    2: 14
                    3: 20
                    4: 16
              default: 24
          }
        12: .line 322
      StackMap locals: java.security.Principal com.sun.jmx.remote.security.MBeanServerFileAccessController$Access
      StackMap stack:
            iconst_1
            istore 10 /* ok */
        start local 10 // boolean ok
        13: .line 323
            goto 25
        end local 10 // boolean ok
        14: .line 325
      StackMap locals:
      StackMap stack:
            aload 9 /* access */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController$Access.write:Z
            istore 10 /* ok */
        start local 10 // boolean ok
        15: .line 326
            goto 25
        end local 10 // boolean ok
        16: .line 328
      StackMap locals:
      StackMap stack:
            aload 9 /* access */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController$Access.unregister:Z
            istore 10 /* ok */
        start local 10 // boolean ok
        17: .line 329
            iload 10 /* ok */
            ifne 25
            aload 9 /* access */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController$Access.write:Z
            ifeq 25
        18: .line 330
            ldc "unregister"
            astore 6 /* newPropertyValue */
        19: .line 331
            goto 25
        end local 10 // boolean ok
        20: .line 333
      StackMap locals:
      StackMap stack:
            aload 9 /* access */
            aload 2 /* arg */
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController.checkCreateAccess:(Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;Ljava/lang/String;)Z
            istore 10 /* ok */
        start local 10 // boolean ok
        21: .line 334
            iload 10 /* ok */
            ifne 25
            aload 9 /* access */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController$Access.write:Z
            ifeq 25
        22: .line 335
            new java.lang.StringBuilder
            dup
            ldc "create "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* arg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* newPropertyValue */
        23: .line 336
            goto 25
        end local 10 // boolean ok
        24: .line 338
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        start local 10 // boolean ok
        25: .line 340
      StackMap locals: int
      StackMap stack:
            iload 10 /* ok */
            ifeq 27
        26: .line 341
            return
        end local 10 // boolean ok
        end local 9 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
        end local 8 // java.security.Principal p
        27: .line 315
      StackMap locals:
      StackMap stack:
            aload 7 /* i */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 7 // java.util.Iterator i
        28: .line 344
            new java.lang.SecurityException
            dup
            ldc "Access denied! Invalid access level for requested MBeanServer operation."
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            astore 7 /* se */
        start local 7 // java.lang.SecurityException se
        29: .line 351
            aload 6 /* newPropertyValue */
            ifnull 34
        30: .line 352
            new java.lang.SecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Access property for this identity should be similar to: readwrite "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        31: .line 354
            aload 6 /* newPropertyValue */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        32: .line 352
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            astore 8 /* se2 */
        start local 8 // java.lang.SecurityException se2
        33: .line 355
            aload 7 /* se */
            aload 8 /* se2 */
            invokevirtual java.lang.SecurityException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        end local 8 // java.lang.SecurityException se2
        34: .line 357
      StackMap locals: com.sun.jmx.remote.security.MBeanServerFileAccessController com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType java.lang.String java.security.AccessControlContext javax.security.auth.Subject java.util.Set java.lang.String java.lang.SecurityException
      StackMap stack:
            aload 7 /* se */
            athrow
        end local 7 // java.lang.SecurityException se
        end local 6 // java.lang.String newPropertyValue
        end local 5 // java.util.Set principals
        end local 4 // javax.security.auth.Subject s
        end local 3 // java.security.AccessControlContext acc
        end local 2 // java.lang.String arg
        end local 1 // com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType requiredAccess
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   35     0              this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0   35     1    requiredAccess  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            0   35     2               arg  Ljava/lang/String;
            1   35     3               acc  Ljava/security/AccessControlContext;
            3   35     4                 s  Ljavax/security/auth/Subject;
            5   35     5        principals  Ljava/util/Set<Ljava/security/Principal;>;
            6   35     6  newPropertyValue  Ljava/lang/String;
            7   28     7                 i  Ljava/util/Iterator<Ljava/security/Principal;>;
            9   27     8                 p  Ljava/security/Principal;
           10   27     9            access  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;
           13   14    10                ok  Z
           15   16    10                ok  Z
           17   20    10                ok  Z
           21   24    10                ok  Z
           25   27    10                ok  Z
           29   35     7                se  Ljava/lang/SecurityException;
           33   34     8               se2  Ljava/lang/SecurityException;
    MethodParameters:
                Name  Flags
      requiredAccess  
      arg             

  private static boolean checkCreateAccess(com.sun.jmx.remote.security.MBeanServerFileAccessController$Access, java.lang.String);
    descriptor: (Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
        start local 1 // java.lang.String className
         0: .line 361
            aload 0 /* access */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController$Access.createPatterns:[Ljava/lang/String;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: com.sun.jmx.remote.security.MBeanServerFileAccessController$Access java.lang.String top int int java.lang.String[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* classNamePattern */
        start local 2 // java.lang.String classNamePattern
         2: .line 362
            aload 2 /* classNamePattern */
            aload 1 /* className */
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController.classNameMatch:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 4
         3: .line 363
            iconst_1
            ireturn
        end local 2 // java.lang.String classNamePattern
         4: .line 361
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 365
            iconst_0
            ireturn
        end local 1 // java.lang.String className
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0            access  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;
            0    7     1         className  Ljava/lang/String;
            2    4     2  classNamePattern  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      access     
      className  

  private static boolean classNameMatch(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.lang.String pattern
        start local 1 // java.lang.String className
         0: .line 378
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         1: .line 379
            new java.util.StringTokenizer
            dup
            aload 0 /* pattern */
            ldc "*"
            iconst_1
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;Z)V
            astore 3 /* stok */
        start local 3 // java.util.StringTokenizer stok
         2: .line 380
            goto 7
         3: .line 381
      StackMap locals: java.lang.StringBuilder java.util.StringTokenizer
      StackMap stack:
            aload 3 /* stok */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            astore 4 /* tok */
        start local 4 // java.lang.String tok
         4: .line 382
            aload 4 /* tok */
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 383
            aload 2 /* sb */
            ldc "[^.]*"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
            goto 7
         6: .line 385
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* sb */
            aload 4 /* tok */
            invokestatic java.util.regex.Pattern.quote:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.lang.String tok
         7: .line 380
      StackMap locals:
      StackMap stack:
            aload 3 /* stok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 3
         8: .line 387
            aload 1 /* className */
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.matches:(Ljava/lang/String;)Z
            ireturn
        end local 3 // java.util.StringTokenizer stok
        end local 2 // java.lang.StringBuilder sb
        end local 1 // java.lang.String className
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0    pattern  Ljava/lang/String;
            0    9     1  className  Ljava/lang/String;
            1    9     2         sb  Ljava/lang/StringBuilder;
            2    9     3       stok  Ljava/util/StringTokenizer;
            4    7     4        tok  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      pattern    
      className  

  private void parseProperties(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
        start local 1 // java.util.Properties props
         0: .line 391
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessMap:Ljava/util/Map;
         1: .line 392
            aload 1 /* props */
            invokevirtual java.util.Properties.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: com.sun.jmx.remote.security.MBeanServerFileAccessController java.util.Properties top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 393
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* identity */
        start local 4 // java.lang.String identity
         4: .line 394
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* accessString */
        start local 5 // java.lang.String accessString
         5: .line 395
            aload 4 /* identity */
            aload 5 /* accessString */
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController$Parser.parseAccess:(Ljava/lang/String;Ljava/lang/String;)Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;
            astore 6 /* access */
        start local 6 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
         6: .line 396
            aload 0 /* this */
            getfield com.sun.jmx.remote.security.MBeanServerFileAccessController.accessMap:Ljava/util/Map;
            aload 4 /* identity */
            aload 6 /* access */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // com.sun.jmx.remote.security.MBeanServerFileAccessController$Access access
        end local 5 // java.lang.String accessString
        end local 4 // java.lang.String identity
        end local 2 // java.util.Map$Entry entry
         7: .line 392
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 398
            return
        end local 1 // java.util.Properties props
        end local 0 // com.sun.jmx.remote.security.MBeanServerFileAccessController this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController;
            0    9     1         props  Ljava/util/Properties;
            3    7     2         entry  Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
            4    7     4      identity  Ljava/lang/String;
            5    7     5  accessString  Ljava/lang/String;
            6    7     6        access  Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$Access;
    MethodParameters:
       Name  Flags
      props  

  static int[] $SWITCH_TABLE$com$sun$jmx$remote$security$MBeanServerFileAccessController$AccessType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 82
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController.$SWITCH_TABLE$com$sun$jmx$remote$security$MBeanServerFileAccessController$AccessType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.values:()[Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.CREATE:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.READ:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.UNREGISTER:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.WRITE:Lcom/sun/jmx/remote/security/MBeanServerFileAccessController$AccessType;
            invokevirtual com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType.ordinal:()I
            iconst_2
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic com.sun.jmx.remote.security.MBeanServerFileAccessController.$SWITCH_TABLE$com$sun$jmx$remote$security$MBeanServerFileAccessController$AccessType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
SourceFile: "MBeanServerFileAccessController.java"
NestMembers:
  com.sun.jmx.remote.security.MBeanServerFileAccessController$1  com.sun.jmx.remote.security.MBeanServerFileAccessController$Access  com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType  com.sun.jmx.remote.security.MBeanServerFileAccessController$Parser
InnerClasses:
  com.sun.jmx.remote.security.MBeanServerFileAccessController$1
  private Access = com.sun.jmx.remote.security.MBeanServerFileAccessController$Access of com.sun.jmx.remote.security.MBeanServerFileAccessController
  private final AccessType = com.sun.jmx.remote.security.MBeanServerFileAccessController$AccessType of com.sun.jmx.remote.security.MBeanServerFileAccessController
  private Parser = com.sun.jmx.remote.security.MBeanServerFileAccessController$Parser of com.sun.jmx.remote.security.MBeanServerFileAccessController
  public abstract Entry = java.util.Map$Entry of java.util.Map