public class javax.smartcardio.CardPermission extends java.security.Permission
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.smartcardio.CardPermission
  super_class: java.security.Permission
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7146787880530705613

  private static final int A_CONNECT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int A_EXCLUSIVE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int A_GET_BASIC_CHANNEL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int A_OPEN_LOGICAL_CHANNEL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private static final int A_RESET;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  private static final int A_TRANSMIT_CONTROL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 32

  private static final int A_ALL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 63

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

  private static final java.lang.String S_CONNECT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "connect"

  private static final java.lang.String S_EXCLUSIVE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "exclusive"

  private static final java.lang.String S_GET_BASIC_CHANNEL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "getBasicChannel"

  private static final java.lang.String S_OPEN_LOGICAL_CHANNEL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "openLogicalChannel"

  private static final java.lang.String S_RESET;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "reset"

  private static final java.lang.String S_TRANSMIT_CONTROL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "transmitControl"

  private static final java.lang.String S_ALL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "*"

  private static final java.lang.String[] ARRAY_STRINGS;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private transient int mask;
    descriptor: I
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 87
            bipush 7
            newarray 10
            dup
            iconst_0
         1: .line 88
            bipush 63
            iastore
            dup
            iconst_1
         2: .line 89
            iconst_1
            iastore
            dup
            iconst_2
         3: .line 90
            iconst_2
            iastore
            dup
            iconst_3
         4: .line 91
            iconst_4
            iastore
            dup
            iconst_4
         5: .line 92
            bipush 8
            iastore
            dup
            iconst_5
         6: .line 93
            bipush 16
            iastore
            dup
            bipush 6
         7: .line 94
            bipush 32
            iastore
         8: .line 87
            putstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
         9: .line 106
            bipush 7
            anewarray java.lang.String
            dup
            iconst_0
        10: .line 107
            ldc "*"
            aastore
            dup
            iconst_1
        11: .line 108
            ldc "connect"
            aastore
            dup
            iconst_2
        12: .line 109
            ldc "exclusive"
            aastore
            dup
            iconst_3
        13: .line 110
            ldc "getBasicChannel"
            aastore
            dup
            iconst_4
        14: .line 111
            ldc "openLogicalChannel"
            aastore
            dup
            iconst_5
        15: .line 112
            ldc "reset"
            aastore
            dup
            bipush 6
        16: .line 113
            ldc "transmitControl"
            aastore
        17: .line 106
            putstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
        18: .line 114
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // javax.smartcardio.CardPermission this
        start local 1 // java.lang.String terminalName
        start local 2 // java.lang.String actions
         0: .line 141
            aload 0 /* this */
            aload 1 /* terminalName */
            invokespecial java.security.Permission.<init>:(Ljava/lang/String;)V
         1: .line 142
            aload 1 /* terminalName */
            ifnonnull 3
         2: .line 143
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         3: .line 145
      StackMap locals: javax.smartcardio.CardPermission java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* actions */
            invokestatic javax.smartcardio.CardPermission.getMask:(Ljava/lang/String;)I
            putfield javax.smartcardio.CardPermission.mask:I
         4: .line 146
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.mask:I
            invokestatic javax.smartcardio.CardPermission.getActions:(I)Ljava/lang/String;
            putfield javax.smartcardio.CardPermission.actions:Ljava/lang/String;
         5: .line 147
            return
        end local 2 // java.lang.String actions
        end local 1 // java.lang.String terminalName
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Ljavax/smartcardio/CardPermission;
            0    6     1  terminalName  Ljava/lang/String;
            0    6     2       actions  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      terminalName  
      actions       

  private static int getMask(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // java.lang.String actions
         0: .line 150
            aload 0 /* actions */
            ifnonnull 2
         1: .line 151
            iconst_0
            ireturn
         2: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* actions */
            invokevirtual java.lang.String.length:()I
            ifne 4
         3: .line 154
            new java.lang.IllegalArgumentException
            dup
            ldc "actions must not be empty"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 158
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         5: goto 9
         6: .line 159
      StackMap locals: int
      StackMap stack:
            aload 0 /* actions */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            if_acmpne 8
         7: .line 160
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 1 /* i */
            iaload
            ireturn
         8: .line 158
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 1 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            arraylength
            if_icmplt 6
        end local 1 // int i
        10: .line 164
            aload 0 /* actions */
            ldc ","
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 12
        11: .line 165
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid actions: '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* actions */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 167
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* mask */
        start local 1 // int mask
        13: .line 168
            aload 0 /* actions */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* split */
        start local 2 // java.lang.String[] split
        14: .line 170
            aload 2 /* split */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 25
      StackMap locals: java.lang.String int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        15: aload 6
            iload 4
            aaload
            astore 3 /* s */
        start local 3 // java.lang.String s
        16: .line 171
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        17: goto 22
        18: .line 172
      StackMap locals: java.lang.String int java.lang.String[] java.lang.String int int java.lang.String[] int
      StackMap stack:
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            iload 7 /* i */
            aaload
            aload 3 /* s */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 21
        19: .line 173
            iload 1 /* mask */
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 7 /* i */
            iaload
            ior
            istore 1 /* mask */
        20: .line 174
            goto 24
        21: .line 171
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 7 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            arraylength
            if_icmplt 18
        end local 7 // int i
        23: .line 177
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid action: '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String s
        24: .line 170
      StackMap locals: java.lang.String int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        25: iload 4
            iload 5
            if_icmplt 15
        26: .line 180
            iload 1 /* mask */
            ireturn
        end local 2 // java.lang.String[] split
        end local 1 // int mask
        end local 0 // java.lang.String actions
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   27     0  actions  Ljava/lang/String;
            5   10     1        i  I
           13   27     1     mask  I
           14   27     2    split  [Ljava/lang/String;
           16   24     3        s  Ljava/lang/String;
           17   23     7        i  I
    MethodParameters:
         Name  Flags
      actions  

  private static java.lang.String getActions(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // int mask
         0: .line 184
            iload 0 /* mask */
            ifne 2
         1: .line 185
            aconst_null
            areturn
         2: .line 187
      StackMap locals:
      StackMap stack:
            iload 0 /* mask */
            bipush 63
            if_icmpne 4
         3: .line 188
            ldc "*"
            areturn
         4: .line 190
      StackMap locals:
      StackMap stack:
            new java.util.StringJoiner
            dup
            ldc ","
            invokespecial java.util.StringJoiner.<init>:(Ljava/lang/CharSequence;)V
            astore 1 /* sj */
        start local 1 // java.util.StringJoiner sj
         5: .line 191
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         6: goto 11
         7: .line 192
      StackMap locals: java.util.StringJoiner int
      StackMap stack:
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 2 /* i */
            iaload
            istore 3 /* action */
        start local 3 // int action
         8: .line 193
            iload 0 /* mask */
            iload 3 /* action */
            iand
            iload 3 /* action */
            if_icmpne 10
         9: .line 194
            aload 1 /* sj */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            iload 2 /* i */
            aaload
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
        end local 3 // int action
        10: .line 191
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            arraylength
            if_icmplt 7
        end local 2 // int i
        12: .line 197
            aload 1 /* sj */
            invokevirtual java.util.StringJoiner.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.util.StringJoiner sj
        end local 0 // int mask
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    mask  I
            5   13     1      sj  Ljava/util/StringJoiner;
            6   12     2       i  I
            8   10     3  action  I
    MethodParameters:
      Name  Flags
      mask  

  public java.lang.String getActions();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.smartcardio.CardPermission this
         0: .line 210
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.actions:Ljava/lang/String;
            areturn
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/smartcardio/CardPermission;

  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.smartcardio.CardPermission this
        start local 1 // java.security.Permission permission
         0: .line 230
            aload 1 /* permission */
            instanceof javax.smartcardio.CardPermission
            ifne 2
         1: .line 231
            iconst_0
            ireturn
         2: .line 233
      StackMap locals:
      StackMap stack:
            aload 1 /* permission */
            checkcast javax.smartcardio.CardPermission
            astore 2 /* other */
        start local 2 // javax.smartcardio.CardPermission other
         3: .line 234
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.mask:I
            aload 2 /* other */
            getfield javax.smartcardio.CardPermission.mask:I
            iand
            aload 2 /* other */
            getfield javax.smartcardio.CardPermission.mask:I
            if_icmpeq 5
         4: .line 235
            iconst_0
            ireturn
         5: .line 237
      StackMap locals: javax.smartcardio.CardPermission
      StackMap stack:
            aload 0 /* this */
            invokevirtual javax.smartcardio.CardPermission.getName:()Ljava/lang/String;
            astore 3 /* thisName */
        start local 3 // java.lang.String thisName
         6: .line 238
            aload 3 /* thisName */
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 239
            iconst_1
            ireturn
         8: .line 241
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* thisName */
            aload 2 /* other */
            invokevirtual javax.smartcardio.CardPermission.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         9: .line 242
            iconst_1
            ireturn
        10: .line 244
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // java.lang.String thisName
        end local 2 // javax.smartcardio.CardPermission other
        end local 1 // java.security.Permission permission
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Ljavax/smartcardio/CardPermission;
            0   11     1  permission  Ljava/security/Permission;
            3   11     2       other  Ljavax/smartcardio/CardPermission;
            6   11     3    thisName  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      permission  

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // javax.smartcardio.CardPermission this
        start local 1 // java.lang.Object obj
         0: .line 264
            aload 0 /* this */
            aload 1 /* obj */
            if_acmpne 2
         1: .line 265
            iconst_1
            ireturn
         2: .line 267
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            instanceof javax.smartcardio.CardPermission
            ifne 4
         3: .line 268
            iconst_0
            ireturn
         4: .line 270
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            checkcast javax.smartcardio.CardPermission
            astore 2 /* other */
        start local 2 // javax.smartcardio.CardPermission other
         5: .line 271
            aload 0 /* this */
            invokevirtual javax.smartcardio.CardPermission.getName:()Ljava/lang/String;
            aload 2 /* other */
            invokevirtual javax.smartcardio.CardPermission.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.mask:I
            aload 2 /* other */
            getfield javax.smartcardio.CardPermission.mask:I
            if_icmpne 6
            iconst_1
            ireturn
      StackMap locals: javax.smartcardio.CardPermission
      StackMap stack:
         6: iconst_0
            ireturn
        end local 2 // javax.smartcardio.CardPermission other
        end local 1 // java.lang.Object obj
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Ljavax/smartcardio/CardPermission;
            0    7     1    obj  Ljava/lang/Object;
            5    7     2  other  Ljavax/smartcardio/CardPermission;
    MethodParameters:
      Name  Flags
      obj   

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // javax.smartcardio.CardPermission this
         0: .line 280
            aload 0 /* this */
            invokevirtual javax.smartcardio.CardPermission.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.hashCode:()I
            bipush 31
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.mask:I
            imul
            iadd
            ireturn
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/smartcardio/CardPermission;

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // javax.smartcardio.CardPermission this
        start local 1 // java.io.ObjectOutputStream s
         0: .line 285
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.defaultWriteObject:()V
         1: .line 286
            return
        end local 1 // java.io.ObjectOutputStream s
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavax/smartcardio/CardPermission;
            0    2     1     s  Ljava/io/ObjectOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // javax.smartcardio.CardPermission this
        start local 1 // java.io.ObjectInputStream s
         0: .line 291
            aload 1 /* s */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 292
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.actions:Ljava/lang/String;
            invokestatic javax.smartcardio.CardPermission.getMask:(Ljava/lang/String;)I
            putfield javax.smartcardio.CardPermission.mask:I
         2: .line 293
            return
        end local 1 // java.io.ObjectInputStream s
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljavax/smartcardio/CardPermission;
            0    3     1     s  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "CardPermission.java"