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 volatile java.lang.String actions;
    descriptor: Ljava/lang/String;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  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
            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    5     0          this  Ljavax/smartcardio/CardPermission;
            0    5     1  terminalName  Ljava/lang/String;
            0    5     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 149
            aload 0 /* actions */
            ifnull 1
            aload 0 /* actions */
            invokevirtual java.lang.String.length:()I
            ifne 2
         1: .line 150
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "actions must not be empty"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 154
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         3: goto 7
         4: .line 155
      StackMap locals: int
      StackMap stack:
            aload 0 /* actions */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            if_acmpne 6
         5: .line 156
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 1 /* i */
            iaload
            ireturn
         6: .line 154
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            arraylength
            if_icmplt 4
        end local 1 // int i
         8: .line 160
            aload 0 /* actions */
            ldc ","
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 10
         9: .line 161
            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
        10: .line 163
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* mask */
        start local 1 // int mask
        11: .line 164
            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
        12: .line 166
            aload 2 /* split */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 23
      StackMap locals: java.lang.String int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        13: aload 6
            iload 4
            aaload
            astore 3 /* s */
        start local 3 // java.lang.String s
        14: .line 167
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        15: goto 20
        16: .line 168
      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 19
        17: .line 169
            iload 1 /* mask */
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 7 /* i */
            iaload
            ior
            istore 1 /* mask */
        18: .line 170
            goto 22
        19: .line 167
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 7 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            arraylength
            if_icmplt 16
        end local 7 // int i
        21: .line 173
            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
        22: .line 166
      StackMap locals: java.lang.String int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        23: iload 4
            iload 5
            if_icmplt 13
        24: .line 176
            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   25     0  actions  Ljava/lang/String;
            3    8     1        i  I
           11   25     1     mask  I
           12   25     2    split  [Ljava/lang/String;
           14   22     3        s  Ljava/lang/String;
           15   21     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=5, args_size=1
        start local 0 // int mask
         0: .line 180
            iload 0 /* mask */
            bipush 63
            if_icmpne 2
         1: .line 181
            ldc "*"
            areturn
         2: .line 183
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 1 /* first */
        start local 1 // boolean first
         3: .line 184
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         4: .line 185
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         5: goto 14
         6: .line 186
      StackMap locals: int java.lang.StringBuilder int
      StackMap stack:
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            iload 3 /* i */
            iaload
            istore 4 /* action */
        start local 4 // int action
         7: .line 187
            iload 0 /* mask */
            iload 4 /* action */
            iand
            iload 4 /* action */
            if_icmpne 13
         8: .line 188
            iload 1 /* first */
            ifne 11
         9: .line 189
            aload 2 /* sb */
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 190
            goto 12
        11: .line 191
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 1 /* first */
        12: .line 193
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            getstatic javax.smartcardio.CardPermission.ARRAY_STRINGS:[Ljava/lang/String;
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // int action
        13: .line 185
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 3 /* i */
            getstatic javax.smartcardio.CardPermission.ARRAY_MASKS:[I
            arraylength
            if_icmplt 6
        end local 3 // int i
        15: .line 196
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // boolean first
        end local 0 // int mask
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    mask  I
            3   16     1   first  Z
            4   16     2      sb  Ljava/lang/StringBuilder;
            5   15     3       i  I
            7   13     4  action  I
    MethodParameters:
      Name  Flags
      mask  

  public java.lang.String getActions();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javax.smartcardio.CardPermission this
         0: .line 209
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.actions:Ljava/lang/String;
            ifnonnull 2
         1: .line 210
            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;
         2: .line 212
      StackMap locals:
      StackMap stack:
            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    3     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 232
            aload 1 /* permission */
            instanceof javax.smartcardio.CardPermission
            ifne 2
         1: .line 233
            iconst_0
            ireturn
         2: .line 235
      StackMap locals:
      StackMap stack:
            aload 1 /* permission */
            checkcast javax.smartcardio.CardPermission
            astore 2 /* other */
        start local 2 // javax.smartcardio.CardPermission other
         3: .line 236
            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 237
            iconst_0
            ireturn
         5: .line 239
      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 240
            aload 3 /* thisName */
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 241
            iconst_1
            ireturn
         8: .line 243
      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 244
            iconst_1
            ireturn
        10: .line 246
      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 266
            aload 0 /* this */
            aload 1 /* obj */
            if_acmpne 2
         1: .line 267
            iconst_1
            ireturn
         2: .line 269
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            instanceof javax.smartcardio.CardPermission
            ifne 4
         3: .line 270
            iconst_0
            ireturn
         4: .line 272
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            checkcast javax.smartcardio.CardPermission
            astore 2 /* other */
        start local 2 // javax.smartcardio.CardPermission other
         5: .line 273
            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 282
            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 288
            aload 0 /* this */
            getfield javax.smartcardio.CardPermission.actions:Ljava/lang/String;
            ifnonnull 2
         1: .line 289
            aload 0 /* this */
            invokevirtual javax.smartcardio.CardPermission.getActions:()Ljava/lang/String;
            pop
         2: .line 291
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            invokevirtual java.io.ObjectOutputStream.defaultWriteObject:()V
         3: .line 292
            return
        end local 1 // java.io.ObjectOutputStream s
        end local 0 // javax.smartcardio.CardPermission this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljavax/smartcardio/CardPermission;
            0    4     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 297
            aload 1 /* s */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 298
            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 299
            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"