final class javax.crypto.CryptoPermissions extends java.security.PermissionCollection implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: javax.crypto.CryptoPermissions
  super_class: java.security.PermissionCollection
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4946547168093391015

  private static final java.io.ObjectStreamField[] serialPersistentFields;
    descriptor: [Ljava/io/ObjectStreamField;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private transient java.util.concurrent.ConcurrentHashMap<java.lang.String, java.security.PermissionCollection> perms;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/security/PermissionCollection;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=0, args_size=0
         0: .line 71
            iconst_1
            anewarray java.io.ObjectStreamField
            dup
            iconst_0
         1: .line 72
            new java.io.ObjectStreamField
            dup
            ldc "perms"
            ldc Ljava/util/Hashtable;
            invokespecial java.io.ObjectStreamField.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
            aastore
         2: .line 71
            putstatic javax.crypto.CryptoPermissions.serialPersistentFields:[Ljava/io/ObjectStreamField;
         3: .line 73
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // javax.crypto.CryptoPermissions this
         0: .line 84
            aload 0 /* this */
            invokespecial java.security.PermissionCollection.<init>:()V
         1: .line 85
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 7
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
         2: .line 86
            return
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljavax/crypto/CryptoPermissions;

  void load(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.io.InputStream in
         0: .line 99
            new javax.crypto.CryptoPolicyParser
            dup
            invokespecial javax.crypto.CryptoPolicyParser.<init>:()V
            astore 2 /* parser */
        start local 2 // javax.crypto.CryptoPolicyParser parser
         1: .line 100
            aload 2 /* parser */
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 1 /* in */
            ldc "UTF-8"
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            invokevirtual javax.crypto.CryptoPolicyParser.read:(Ljava/io/Reader;)V
         2: .line 102
            aload 2 /* parser */
            invokevirtual javax.crypto.CryptoPolicyParser.getPermissions:()[Ljavax/crypto/CryptoPermission;
            astore 3 /* parsingResult */
        start local 3 // javax.crypto.CryptoPermission[] parsingResult
         3: .line 103
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: goto 7
         5: .line 104
      StackMap locals: javax.crypto.CryptoPolicyParser javax.crypto.CryptoPermission[] int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* parsingResult */
            iload 4 /* i */
            aaload
            invokevirtual javax.crypto.CryptoPermissions.add:(Ljava/security/Permission;)V
         6: .line 103
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 3 /* parsingResult */
            arraylength
            if_icmplt 5
        end local 4 // int i
         8: .line 106
            return
        end local 3 // javax.crypto.CryptoPermission[] parsingResult
        end local 2 // javax.crypto.CryptoPolicyParser parser
        end local 1 // java.io.InputStream in
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Ljavax/crypto/CryptoPermissions;
            0    9     1             in  Ljava/io/InputStream;
            1    9     2         parser  Ljavax/crypto/CryptoPolicyParser;
            3    9     3  parsingResult  [Ljavax/crypto/CryptoPermission;
            4    8     4              i  I
    Exceptions:
      throws java.io.IOException, javax.crypto.CryptoPolicyParser$ParsingException
    MethodParameters:
      Name  Flags
      in    

  boolean isEmpty();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.crypto.CryptoPermissions this
         0: .line 114
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.isEmpty:()Z
            ireturn
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/CryptoPermissions;

  public void add(java.security.Permission);
    descriptor: (Ljava/security/Permission;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.security.Permission permission
         0: .line 136
            aload 0 /* this */
            invokevirtual javax.crypto.CryptoPermissions.isReadOnly:()Z
            ifeq 2
         1: .line 137
            new java.lang.SecurityException
            dup
            ldc "Attempt to add a Permission to a readonly CryptoPermissions object"
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 142
      StackMap locals:
      StackMap stack:
            aload 1 /* permission */
            instanceof javax.crypto.CryptoPermission
            ifne 4
         3: .line 143
            return
         4: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* permission */
            checkcast javax.crypto.CryptoPermission
            astore 2 /* cryptoPerm */
        start local 2 // javax.crypto.CryptoPermission cryptoPerm
         5: .line 148
            aload 0 /* this */
            aload 2 /* cryptoPerm */
            invokevirtual javax.crypto.CryptoPermissions.getPermissionCollection:(Ljavax/crypto/CryptoPermission;)Ljava/security/PermissionCollection;
         6: .line 147
            astore 3 /* pc */
        start local 3 // java.security.PermissionCollection pc
         7: .line 149
            aload 3 /* pc */
            aload 2 /* cryptoPerm */
            invokevirtual java.security.PermissionCollection.add:(Ljava/security/Permission;)V
         8: .line 150
            aload 2 /* cryptoPerm */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
            astore 4 /* alg */
        start local 4 // java.lang.String alg
         9: .line 151
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 4 /* alg */
            aload 3 /* pc */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 152
            return
        end local 4 // java.lang.String alg
        end local 3 // java.security.PermissionCollection pc
        end local 2 // javax.crypto.CryptoPermission cryptoPerm
        end local 1 // java.security.Permission permission
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Ljavax/crypto/CryptoPermissions;
            0   11     1  permission  Ljava/security/Permission;
            5   11     2  cryptoPerm  Ljavax/crypto/CryptoPermission;
            7   11     3          pc  Ljava/security/PermissionCollection;
            9   11     4         alg  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      permission  

  public boolean implies(java.security.Permission);
    descriptor: (Ljava/security/Permission;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.security.Permission permission
         0: .line 167
            aload 1 /* permission */
            instanceof javax.crypto.CryptoPermission
            ifne 2
         1: .line 168
            iconst_0
            ireturn
         2: .line 171
      StackMap locals:
      StackMap stack:
            aload 1 /* permission */
            checkcast javax.crypto.CryptoPermission
            astore 2 /* cryptoPerm */
        start local 2 // javax.crypto.CryptoPermission cryptoPerm
         3: .line 174
            aload 0 /* this */
            aload 2 /* cryptoPerm */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
            invokevirtual javax.crypto.CryptoPermissions.getPermissionCollection:(Ljava/lang/String;)Ljava/security/PermissionCollection;
         4: .line 173
            astore 3 /* pc */
        start local 3 // java.security.PermissionCollection pc
         5: .line 176
            aload 3 /* pc */
            ifnull 7
         6: .line 177
            aload 3 /* pc */
            aload 2 /* cryptoPerm */
            invokevirtual java.security.PermissionCollection.implies:(Ljava/security/Permission;)Z
            ireturn
         7: .line 180
      StackMap locals: javax.crypto.CryptoPermission java.security.PermissionCollection
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // java.security.PermissionCollection pc
        end local 2 // javax.crypto.CryptoPermission cryptoPerm
        end local 1 // java.security.Permission permission
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Ljavax/crypto/CryptoPermissions;
            0    8     1  permission  Ljava/security/Permission;
            3    8     2  cryptoPerm  Ljavax/crypto/CryptoPermission;
            5    8     3          pc  Ljava/security/PermissionCollection;
    MethodParameters:
            Name  Flags
      permission  

  public java.util.Enumeration<java.security.Permission> elements();
    descriptor: ()Ljava/util/Enumeration;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // javax.crypto.CryptoPermissions this
         0: .line 194
            new javax.crypto.PermissionsEnumerator
            dup
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.elements:()Ljava/util/Enumeration;
            invokespecial javax.crypto.PermissionsEnumerator.<init>:(Ljava/util/Enumeration;)V
            areturn
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/CryptoPermissions;
    Signature: ()Ljava/util/Enumeration<Ljava/security/Permission;>;

  javax.crypto.CryptoPermissions getMinimum(javax.crypto.CryptoPermissions);
    descriptor: (Ljavax/crypto/CryptoPermissions;)Ljavax/crypto/CryptoPermissions;
    flags: (0x0000) 
    Code:
      stack=3, locals=12, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // javax.crypto.CryptoPermissions other
         0: .line 207
            aload 1 /* other */
            ifnonnull 2
         1: .line 208
            aconst_null
            areturn
         2: .line 211
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "CryptoAllPermission"
            invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 212
            aload 1 /* other */
            areturn
         4: .line 215
      StackMap locals:
      StackMap stack:
            aload 1 /* other */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "CryptoAllPermission"
            invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 216
            aload 0 /* this */
            areturn
         6: .line 219
      StackMap locals:
      StackMap stack:
            new javax.crypto.CryptoPermissions
            dup
            invokespecial javax.crypto.CryptoPermissions.<init>:()V
            astore 2 /* ret */
        start local 2 // javax.crypto.CryptoPermissions ret
         7: .line 223
            aload 1 /* other */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "*"
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
         8: .line 222
            astore 3 /* thatWildcard */
        start local 3 // java.security.PermissionCollection thatWildcard
         9: .line 224
            iconst_0
            istore 4 /* maxKeySize */
        start local 4 // int maxKeySize
        10: .line 225
            aload 3 /* thatWildcard */
            ifnull 13
        11: .line 227
            aload 3 /* thatWildcard */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast javax.crypto.CryptoPermission
            invokevirtual javax.crypto.CryptoPermission.getMaxKeySize:()I
        12: .line 226
            istore 4 /* maxKeySize */
        13: .line 232
      StackMap locals: javax.crypto.CryptoPermissions java.security.PermissionCollection int
      StackMap stack:
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.keys:()Ljava/util/Enumeration;
            astore 5 /* thisKeys */
        start local 5 // java.util.Enumeration thisKeys
        14: .line 233
            goto 29
        15: .line 234
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 5 /* thisKeys */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* alg */
        start local 6 // java.lang.String alg
        16: .line 236
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 6 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 7 /* thisPc */
        start local 7 // java.security.PermissionCollection thisPc
        17: .line 237
            aload 1 /* other */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 6 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 8 /* thatPc */
        start local 8 // java.security.PermissionCollection thatPc
        18: .line 241
            aload 8 /* thatPc */
            ifnonnull 23
        19: .line 242
            aload 3 /* thatWildcard */
            ifnonnull 21
        20: .line 247
            goto 29
        21: .line 249
      StackMap locals: java.lang.String java.security.PermissionCollection java.security.PermissionCollection
      StackMap stack:
            aload 0 /* this */
            iload 4 /* maxKeySize */
            aload 7 /* thisPc */
            invokevirtual javax.crypto.CryptoPermissions.getMinimum:(ILjava/security/PermissionCollection;)[Ljavax/crypto/CryptoPermission;
            astore 9 /* partialResult */
        start local 9 // javax.crypto.CryptoPermission[] partialResult
        22: .line 250
            goto 24
        end local 9 // javax.crypto.CryptoPermission[] partialResult
        23: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* thisPc */
            aload 8 /* thatPc */
            invokevirtual javax.crypto.CryptoPermissions.getMinimum:(Ljava/security/PermissionCollection;Ljava/security/PermissionCollection;)[Ljavax/crypto/CryptoPermission;
            astore 9 /* partialResult */
        start local 9 // javax.crypto.CryptoPermission[] partialResult
        24: .line 254
      StackMap locals: javax.crypto.CryptoPermission[]
      StackMap stack:
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        25: goto 28
        26: .line 255
      StackMap locals: int
      StackMap stack:
            aload 2 /* ret */
            aload 9 /* partialResult */
            iload 10 /* i */
            aaload
            invokevirtual javax.crypto.CryptoPermissions.add:(Ljava/security/Permission;)V
        27: .line 254
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: iload 10 /* i */
            aload 9 /* partialResult */
            arraylength
            if_icmplt 26
        end local 10 // int i
        end local 9 // javax.crypto.CryptoPermission[] partialResult
        end local 8 // java.security.PermissionCollection thatPc
        end local 7 // java.security.PermissionCollection thisPc
        end local 6 // java.lang.String alg
        29: .line 233
      StackMap locals: javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions java.security.PermissionCollection int java.util.Enumeration
      StackMap stack:
            aload 5 /* thisKeys */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 15
        30: .line 260
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "*"
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
        31: .line 259
            astore 6 /* thisWildcard */
        start local 6 // java.security.PermissionCollection thisWildcard
        32: .line 264
            aload 6 /* thisWildcard */
            ifnonnull 34
        33: .line 265
            aload 2 /* ret */
            areturn
        34: .line 272
      StackMap locals: java.security.PermissionCollection
      StackMap stack:
            aload 6 /* thisWildcard */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast javax.crypto.CryptoPermission
            invokevirtual javax.crypto.CryptoPermission.getMaxKeySize:()I
        35: .line 270
            istore 4 /* maxKeySize */
        36: .line 273
            aload 1 /* other */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.keys:()Ljava/util/Enumeration;
            astore 7 /* thatKeys */
        start local 7 // java.util.Enumeration thatKeys
        37: .line 274
            goto 48
        38: .line 275
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 7 /* thatKeys */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* alg */
        start local 8 // java.lang.String alg
        39: .line 277
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 8 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 41
        40: .line 278
            goto 48
        41: .line 281
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* other */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 8 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 9 /* thatPc */
        start local 9 // java.security.PermissionCollection thatPc
        42: .line 285
            aload 0 /* this */
            iload 4 /* maxKeySize */
            aload 9 /* thatPc */
            invokevirtual javax.crypto.CryptoPermissions.getMinimum:(ILjava/security/PermissionCollection;)[Ljavax/crypto/CryptoPermission;
            astore 10 /* partialResult */
        start local 10 // javax.crypto.CryptoPermission[] partialResult
        43: .line 287
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        44: goto 47
        45: .line 288
      StackMap locals: java.security.PermissionCollection javax.crypto.CryptoPermission[] int
      StackMap stack:
            aload 2 /* ret */
            aload 10 /* partialResult */
            iload 11 /* i */
            aaload
            invokevirtual javax.crypto.CryptoPermissions.add:(Ljava/security/Permission;)V
        46: .line 287
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        47: iload 11 /* i */
            aload 10 /* partialResult */
            arraylength
            if_icmplt 45
        end local 11 // int i
        end local 10 // javax.crypto.CryptoPermission[] partialResult
        end local 9 // java.security.PermissionCollection thatPc
        end local 8 // java.lang.String alg
        48: .line 274
      StackMap locals: javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions java.security.PermissionCollection int java.util.Enumeration java.security.PermissionCollection java.util.Enumeration
      StackMap stack:
            aload 7 /* thatKeys */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 38
        49: .line 291
            aload 2 /* ret */
            areturn
        end local 7 // java.util.Enumeration thatKeys
        end local 6 // java.security.PermissionCollection thisWildcard
        end local 5 // java.util.Enumeration thisKeys
        end local 4 // int maxKeySize
        end local 3 // java.security.PermissionCollection thatWildcard
        end local 2 // javax.crypto.CryptoPermissions ret
        end local 1 // javax.crypto.CryptoPermissions other
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   50     0           this  Ljavax/crypto/CryptoPermissions;
            0   50     1          other  Ljavax/crypto/CryptoPermissions;
            7   50     2            ret  Ljavax/crypto/CryptoPermissions;
            9   50     3   thatWildcard  Ljava/security/PermissionCollection;
           10   50     4     maxKeySize  I
           14   50     5       thisKeys  Ljava/util/Enumeration<Ljava/lang/String;>;
           16   29     6            alg  Ljava/lang/String;
           17   29     7         thisPc  Ljava/security/PermissionCollection;
           18   29     8         thatPc  Ljava/security/PermissionCollection;
           22   23     9  partialResult  [Ljavax/crypto/CryptoPermission;
           24   29     9  partialResult  [Ljavax/crypto/CryptoPermission;
           25   29    10              i  I
           32   50     6   thisWildcard  Ljava/security/PermissionCollection;
           37   50     7       thatKeys  Ljava/util/Enumeration<Ljava/lang/String;>;
           39   48     8            alg  Ljava/lang/String;
           42   48     9         thatPc  Ljava/security/PermissionCollection;
           43   48    10  partialResult  [Ljavax/crypto/CryptoPermission;
           44   48    11              i  I
    MethodParameters:
       Name  Flags
      other  

  private javax.crypto.CryptoPermission[] getMinimum(java.security.PermissionCollection, java.security.PermissionCollection);
    descriptor: (Ljava/security/PermissionCollection;Ljava/security/PermissionCollection;)[Ljavax/crypto/CryptoPermission;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.security.PermissionCollection thisPc
        start local 2 // java.security.PermissionCollection thatPc
         0: .line 306
            new java.util.Vector
            dup
            iconst_2
            invokespecial java.util.Vector.<init>:(I)V
            astore 3 /* permVector */
        start local 3 // java.util.Vector permVector
         1: .line 308
            aload 1 /* thisPc */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 4 /* thisPcPermissions */
        start local 4 // java.util.Enumeration thisPcPermissions
         2: .line 323
            goto 15
         3: .line 325
      StackMap locals: java.util.Vector java.util.Enumeration
      StackMap stack:
            aload 4 /* thisPcPermissions */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast javax.crypto.CryptoPermission
         4: .line 324
            astore 5 /* thisCp */
        start local 5 // javax.crypto.CryptoPermission thisCp
         5: .line 327
            aload 2 /* thatPc */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 6 /* thatPcPermissions */
        start local 6 // java.util.Enumeration thatPcPermissions
         6: .line 328
            goto 14
         7: .line 330
      StackMap locals: javax.crypto.CryptoPermission java.util.Enumeration
      StackMap stack:
            aload 6 /* thatPcPermissions */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast javax.crypto.CryptoPermission
         8: .line 329
            astore 7 /* thatCp */
        start local 7 // javax.crypto.CryptoPermission thatCp
         9: .line 332
            aload 7 /* thatCp */
            aload 5 /* thisCp */
            invokevirtual javax.crypto.CryptoPermission.implies:(Ljava/security/Permission;)Z
            ifeq 12
        10: .line 333
            aload 3 /* permVector */
            aload 5 /* thisCp */
            invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
        11: .line 334
            goto 15
        12: .line 336
      StackMap locals: javax.crypto.CryptoPermission
      StackMap stack:
            aload 5 /* thisCp */
            aload 7 /* thatCp */
            invokevirtual javax.crypto.CryptoPermission.implies:(Ljava/security/Permission;)Z
            ifeq 14
        13: .line 337
            aload 3 /* permVector */
            aload 7 /* thatCp */
            invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
        end local 7 // javax.crypto.CryptoPermission thatCp
        14: .line 328
      StackMap locals:
      StackMap stack:
            aload 6 /* thatPcPermissions */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 7
        end local 6 // java.util.Enumeration thatPcPermissions
        end local 5 // javax.crypto.CryptoPermission thisCp
        15: .line 323
      StackMap locals:
      StackMap stack:
            aload 4 /* thisPcPermissions */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 3
        16: .line 342
            aload 3 /* permVector */
            invokevirtual java.util.Vector.size:()I
            anewarray javax.crypto.CryptoPermission
            astore 5 /* ret */
        start local 5 // javax.crypto.CryptoPermission[] ret
        17: .line 343
            aload 3 /* permVector */
            aload 5 /* ret */
            invokevirtual java.util.Vector.copyInto:([Ljava/lang/Object;)V
        18: .line 344
            aload 5 /* ret */
            areturn
        end local 5 // javax.crypto.CryptoPermission[] ret
        end local 4 // java.util.Enumeration thisPcPermissions
        end local 3 // java.util.Vector permVector
        end local 2 // java.security.PermissionCollection thatPc
        end local 1 // java.security.PermissionCollection thisPc
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0               this  Ljavax/crypto/CryptoPermissions;
            0   19     1             thisPc  Ljava/security/PermissionCollection;
            0   19     2             thatPc  Ljava/security/PermissionCollection;
            1   19     3         permVector  Ljava/util/Vector<Ljavax/crypto/CryptoPermission;>;
            2   19     4  thisPcPermissions  Ljava/util/Enumeration<Ljava/security/Permission;>;
            5   15     5             thisCp  Ljavax/crypto/CryptoPermission;
            6   15     6  thatPcPermissions  Ljava/util/Enumeration<Ljava/security/Permission;>;
            9   14     7             thatCp  Ljavax/crypto/CryptoPermission;
           17   19     5                ret  [Ljavax/crypto/CryptoPermission;
    MethodParameters:
        Name  Flags
      thisPc  
      thatPc  

  private javax.crypto.CryptoPermission[] getMinimum(int, java.security.PermissionCollection);
    descriptor: (ILjava/security/PermissionCollection;)[Ljavax/crypto/CryptoPermission;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // int maxKeySize
        start local 2 // java.security.PermissionCollection pc
         0: .line 362
            new java.util.Vector
            dup
            iconst_1
            invokespecial java.util.Vector.<init>:(I)V
            astore 3 /* permVector */
        start local 3 // java.util.Vector permVector
         1: .line 364
            aload 2 /* pc */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 4 /* enum_ */
        start local 4 // java.util.Enumeration enum_
         2: .line 366
            goto 23
         3: .line 368
      StackMap locals: java.util.Vector java.util.Enumeration
      StackMap stack:
            aload 4 /* enum_ */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast javax.crypto.CryptoPermission
         4: .line 367
            astore 5 /* cp */
        start local 5 // javax.crypto.CryptoPermission cp
         5: .line 369
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getMaxKeySize:()I
            iload 1 /* maxKeySize */
            if_icmpgt 8
         6: .line 370
            aload 3 /* permVector */
            aload 5 /* cp */
            invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
         7: .line 371
            goto 23
         8: .line 372
      StackMap locals: javax.crypto.CryptoPermission
      StackMap stack:
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getCheckParam:()Z
            ifeq 17
         9: .line 373
            aload 3 /* permVector */
        10: .line 374
            new javax.crypto.CryptoPermission
            dup
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
        11: .line 375
            iload 1 /* maxKeySize */
        12: .line 376
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithmParameterSpec:()Ljava/security/spec/AlgorithmParameterSpec;
        13: .line 377
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
        14: .line 374
            invokespecial javax.crypto.CryptoPermission.<init>:(Ljava/lang/String;ILjava/security/spec/AlgorithmParameterSpec;Ljava/lang/String;)V
        15: .line 373
            invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
        16: .line 378
            goto 23
        17: .line 379
      StackMap locals:
      StackMap stack:
            aload 3 /* permVector */
        18: .line 380
            new javax.crypto.CryptoPermission
            dup
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
        19: .line 381
            iload 1 /* maxKeySize */
        20: .line 382
            aload 5 /* cp */
            invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
        21: .line 380
            invokespecial javax.crypto.CryptoPermission.<init>:(Ljava/lang/String;ILjava/lang/String;)V
        22: .line 379
            invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
        end local 5 // javax.crypto.CryptoPermission cp
        23: .line 366
      StackMap locals:
      StackMap stack:
            aload 4 /* enum_ */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 3
        24: .line 387
            aload 3 /* permVector */
            invokevirtual java.util.Vector.size:()I
            anewarray javax.crypto.CryptoPermission
            astore 5 /* ret */
        start local 5 // javax.crypto.CryptoPermission[] ret
        25: .line 388
            aload 3 /* permVector */
            aload 5 /* ret */
            invokevirtual java.util.Vector.copyInto:([Ljava/lang/Object;)V
        26: .line 389
            aload 5 /* ret */
            areturn
        end local 5 // javax.crypto.CryptoPermission[] ret
        end local 4 // java.util.Enumeration enum_
        end local 3 // java.util.Vector permVector
        end local 2 // java.security.PermissionCollection pc
        end local 1 // int maxKeySize
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Ljavax/crypto/CryptoPermissions;
            0   27     1  maxKeySize  I
            0   27     2          pc  Ljava/security/PermissionCollection;
            1   27     3  permVector  Ljava/util/Vector<Ljavax/crypto/CryptoPermission;>;
            2   27     4       enum_  Ljava/util/Enumeration<Ljava/security/Permission;>;
            5   23     5          cp  Ljavax/crypto/CryptoPermission;
           25   27     5         ret  [Ljavax/crypto/CryptoPermission;
    MethodParameters:
            Name  Flags
      maxKeySize  
      pc          

  java.security.PermissionCollection getPermissionCollection(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/PermissionCollection;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.lang.String alg
         0: .line 402
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "CryptoAllPermission"
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 2 /* pc */
        start local 2 // java.security.PermissionCollection pc
         1: .line 403
            aload 2 /* pc */
            ifnonnull 5
         2: .line 404
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 2 /* pc */
         3: .line 410
            aload 2 /* pc */
            ifnonnull 5
         4: .line 411
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            ldc "*"
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 2 /* pc */
         5: .line 414
      StackMap locals: java.security.PermissionCollection
      StackMap stack:
            aload 2 /* pc */
            areturn
        end local 2 // java.security.PermissionCollection pc
        end local 1 // java.lang.String alg
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljavax/crypto/CryptoPermissions;
            0    6     1   alg  Ljava/lang/String;
            1    6     2    pc  Ljava/security/PermissionCollection;
    MethodParameters:
      Name  Flags
      alg   

  private java.security.PermissionCollection getPermissionCollection(javax.crypto.CryptoPermission);
    descriptor: (Ljavax/crypto/CryptoPermission;)Ljava/security/PermissionCollection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // javax.crypto.CryptoPermission cryptoPerm
         0: .line 429
            aload 1 /* cryptoPerm */
            invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
            astore 2 /* alg */
        start local 2 // java.lang.String alg
         1: .line 431
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* alg */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
            astore 3 /* pc */
        start local 3 // java.security.PermissionCollection pc
         2: .line 433
            aload 3 /* pc */
            ifnonnull 4
         3: .line 434
            aload 1 /* cryptoPerm */
            invokevirtual javax.crypto.CryptoPermission.newPermissionCollection:()Ljava/security/PermissionCollection;
            astore 3 /* pc */
         4: .line 436
      StackMap locals: java.lang.String java.security.PermissionCollection
      StackMap stack:
            aload 3 /* pc */
            areturn
        end local 3 // java.security.PermissionCollection pc
        end local 2 // java.lang.String alg
        end local 1 // javax.crypto.CryptoPermission cryptoPerm
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Ljavax/crypto/CryptoPermissions;
            0    5     1  cryptoPerm  Ljavax/crypto/CryptoPermission;
            1    5     2         alg  Ljava/lang/String;
            2    5     3          pc  Ljava/security/PermissionCollection;
    MethodParameters:
            Name  Flags
      cryptoPerm  

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.io.ObjectInputStream s
         0: .line 441
            aload 1 /* s */
            invokevirtual java.io.ObjectInputStream.readFields:()Ljava/io/ObjectInputStream$GetField;
            astore 2 /* fields */
        start local 2 // java.io.ObjectInputStream$GetField fields
         1: .line 445
            aload 2 /* fields */
            ldc "perms"
            aconst_null
            invokevirtual java.io.ObjectInputStream$GetField.get:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
         2: .line 444
            checkcast java.util.Hashtable
         3: .line 443
            astore 3 /* permTable */
        start local 3 // java.util.Hashtable permTable
         4: .line 446
            aload 3 /* permTable */
            ifnull 7
         5: .line 447
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            aload 3 /* permTable */
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(Ljava/util/Map;)V
            putfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
         6: .line 448
            goto 8
         7: .line 449
      StackMap locals: java.io.ObjectInputStream$GetField java.util.Hashtable
      StackMap stack:
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
         8: .line 451
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.Hashtable permTable
        end local 2 // java.io.ObjectInputStream$GetField fields
        end local 1 // java.io.ObjectInputStream s
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljavax/crypto/CryptoPermissions;
            0    9     1          s  Ljava/io/ObjectInputStream;
            1    9     2     fields  Ljava/io/ObjectInputStream$GetField;
            4    9     3  permTable  Ljava/util/Hashtable<Ljava/lang/String;Ljava/security/PermissionCollection;>;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      s     

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // javax.crypto.CryptoPermissions this
        start local 1 // java.io.ObjectOutputStream s
         0: .line 455
            new java.util.Hashtable
            dup
            aload 0 /* this */
            getfield javax.crypto.CryptoPermissions.perms:Ljava/util/concurrent/ConcurrentHashMap;
            invokespecial java.util.Hashtable.<init>:(Ljava/util/Map;)V
         1: .line 454
            astore 2 /* permTable */
        start local 2 // java.util.Hashtable permTable
         2: .line 456
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.putFields:()Ljava/io/ObjectOutputStream$PutField;
            astore 3 /* fields */
        start local 3 // java.io.ObjectOutputStream$PutField fields
         3: .line 457
            aload 3 /* fields */
            ldc "perms"
            aload 2 /* permTable */
            invokevirtual java.io.ObjectOutputStream$PutField.put:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 458
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.writeFields:()V
         5: .line 459
            return
        end local 3 // java.io.ObjectOutputStream$PutField fields
        end local 2 // java.util.Hashtable permTable
        end local 1 // java.io.ObjectOutputStream s
        end local 0 // javax.crypto.CryptoPermissions this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljavax/crypto/CryptoPermissions;
            0    6     1          s  Ljava/io/ObjectOutputStream;
            2    6     2  permTable  Ljava/util/Hashtable<Ljava/lang/String;Ljava/security/PermissionCollection;>;
            3    6     3     fields  Ljava/io/ObjectOutputStream$PutField;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "CryptoPermissions.java"
InnerClasses:
  public abstract GetField = java.io.ObjectInputStream$GetField of java.io.ObjectInputStream
  public abstract PutField = java.io.ObjectOutputStream$PutField of java.io.ObjectOutputStream
  final ParsingException = javax.crypto.CryptoPolicyParser$ParsingException of javax.crypto.CryptoPolicyParser