class javax.security.auth.Subject$ClassSet<T> extends java.util.AbstractSet<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: javax.security.auth.Subject$ClassSet
  super_class: java.util.AbstractSet
{
  private int which;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Class<T> c;
    descriptor: Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/lang/Class<TT;>;

  private java.util.Set<T> set;
    descriptor: Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Set<TT;>;

  final javax.security.auth.Subject this$0;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(int, java.lang.Class<T>);
    descriptor: (Ljavax/security/auth/Subject;ILjava/lang/Class;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // javax.security.auth.Subject$ClassSet this
        start local 2 // int which
        start local 3 // java.lang.Class c
         0: .line 1331
            aload 0 /* this */
            aload 1
            putfield javax.security.auth.Subject$ClassSet.this$0:Ljavax/security/auth/Subject;
            aload 0 /* this */
            invokespecial java.util.AbstractSet.<init>:()V
         1: .line 1332
            aload 0 /* this */
            iload 2 /* which */
            putfield javax.security.auth.Subject$ClassSet.which:I
         2: .line 1333
            aload 0 /* this */
            aload 3 /* c */
            putfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
         3: .line 1334
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
         4: .line 1336
            iload 2 /* which */
            tableswitch { // 1 - 2
                    1: 5
                    2: 10
              default: 15
          }
         5: .line 1338
      StackMap locals: javax.security.auth.Subject$ClassSet javax.security.auth.Subject int java.lang.Class
      StackMap stack:
            aload 1
            getfield javax.security.auth.Subject.principals:Ljava/util/Set;
            dup
            astore 4
            monitorenter
         6: aload 0 /* this */
            invokevirtual javax.security.auth.Subject$ClassSet.populateSet:()V
            aload 4
            monitorexit
         7: goto 20
      StackMap locals: javax.security.auth.Subject$ClassSet javax.security.auth.Subject int java.lang.Class java.util.Set
      StackMap stack: java.lang.Throwable
         8: aload 4
            monitorexit
         9: athrow
        10: .line 1341
      StackMap locals:
      StackMap stack:
            aload 1
            getfield javax.security.auth.Subject.pubCredentials:Ljava/util/Set;
            dup
            astore 4
            monitorenter
        11: aload 0 /* this */
            invokevirtual javax.security.auth.Subject$ClassSet.populateSet:()V
            aload 4
            monitorexit
        12: goto 20
      StackMap locals: javax.security.auth.Subject$ClassSet javax.security.auth.Subject int java.lang.Class java.util.Set
      StackMap stack: java.lang.Throwable
        13: aload 4
            monitorexit
        14: athrow
        15: .line 1344
      StackMap locals:
      StackMap stack:
            aload 1
            getfield javax.security.auth.Subject.privCredentials:Ljava/util/Set;
            dup
            astore 4
            monitorenter
        16: aload 0 /* this */
            invokevirtual javax.security.auth.Subject$ClassSet.populateSet:()V
            aload 4
            monitorexit
        17: goto 20
      StackMap locals: javax.security.auth.Subject$ClassSet javax.security.auth.Subject int java.lang.Class java.util.Set
      StackMap stack: java.lang.Throwable
        18: aload 4
            monitorexit
        19: athrow
        20: .line 1347
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Class c
        end local 2 // int which
        end local 0 // javax.security.auth.Subject$ClassSet this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   21     0   this  Ljavax/security/auth/Subject$ClassSet<TT;>;
            0   21     2  which  I
            0   21     3      c  Ljava/lang/Class<TT;>;
      Exception table:
        from    to  target  type
           6     7       8  any
           8     9       8  any
          11    12      13  any
          13    14      13  any
          16    17      18  any
          18    19      18  any
    Signature: (ILjava/lang/Class<TT;>;)V
    MethodParameters:
        Name  Flags
      this$0  final
      which   
      c       

  private void populateSet();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // javax.security.auth.Subject$ClassSet this
         0: .line 1351
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.which:I
            tableswitch { // 1 - 2
                    1: 1
                    2: 3
              default: 5
          }
         1: .line 1353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.this$0:Ljavax/security/auth/Subject;
            getfield javax.security.auth.Subject.principals:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         2: .line 1354
            goto 23
        end local 1 // java.util.Iterator iterator
         3: .line 1356
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.this$0:Ljavax/security/auth/Subject;
            getfield javax.security.auth.Subject.pubCredentials:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         4: .line 1357
            goto 23
        end local 1 // java.util.Iterator iterator
         5: .line 1359
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.this$0:Ljavax/security/auth/Subject;
            getfield javax.security.auth.Subject.privCredentials:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iterator */
        start local 1 // java.util.Iterator iterator
         6: .line 1366
            goto 23
         7: .line 1368
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.which:I
            iconst_3
            if_icmpne 11
         8: .line 1370
            new javax.security.auth.Subject$ClassSet$1
            dup
            aload 0 /* this */
            aload 1 /* iterator */
            invokespecial javax.security.auth.Subject$ClassSet$1.<init>:(Ljavax/security/auth/Subject$ClassSet;Ljava/util/Iterator;)V
         9: .line 1369
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            astore 2 /* next */
        start local 2 // java.lang.Object next
        10: .line 1375
            goto 12
        end local 2 // java.lang.Object next
        11: .line 1376
      StackMap locals:
      StackMap stack:
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 2 /* next */
        start local 2 // java.lang.Object next
        12: .line 1378
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
            aload 2 /* next */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 23
        13: .line 1379
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.which:I
            iconst_3
            if_icmpeq 16
        14: .line 1380
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
            aload 2 /* next */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 1381
            goto 23
        16: .line 1383
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
        17: .line 1384
            aload 3 /* sm */
            ifnull 22
        18: .line 1385
            aload 3 /* sm */
            new javax.security.auth.PrivateCredentialPermission
            dup
        19: .line 1386
            aload 2 /* next */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        20: .line 1387
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.this$0:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            invokespecial javax.security.auth.PrivateCredentialPermission.<init>:(Ljava/lang/String;Ljava/util/Set;)V
        21: .line 1385
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
        22: .line 1389
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
            aload 2 /* next */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.SecurityManager sm
        end local 2 // java.lang.Object next
        23: .line 1366
      StackMap locals:
      StackMap stack:
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        24: .line 1393
            return
        end local 1 // java.util.Iterator iterator
        end local 0 // javax.security.auth.Subject$ClassSet this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0      this  Ljavax/security/auth/Subject$ClassSet<TT;>;
            2    3     1  iterator  Ljava/util/Iterator<*>;
            4    5     1  iterator  Ljava/util/Iterator<*>;
            6   25     1  iterator  Ljava/util/Iterator<*>;
           10   11     2      next  Ljava/lang/Object;
           12   23     2      next  Ljava/lang/Object;
           17   23     3        sm  Ljava/lang/SecurityManager;

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.security.auth.Subject$ClassSet this
         0: .line 1396
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            ireturn
        end local 0 // javax.security.auth.Subject$ClassSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/security/auth/Subject$ClassSet<TT;>;

  public java.util.Iterator<T> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.security.auth.Subject$ClassSet this
         0: .line 1400
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // javax.security.auth.Subject$ClassSet this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/security/auth/Subject$ClassSet<TT;>;
    Signature: ()Ljava/util/Iterator<TT;>;

  public boolean add();
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // javax.security.auth.Subject$ClassSet this
        start local 1 // java.lang.Object o
         0: .line 1405
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 6
         1: .line 1406
            new java.text.MessageFormat
            dup
         2: .line 1407
            ldc "attempting.to.add.an.object.which.is.not.an.instance.of.class"
         3: .line 1406
            invokestatic sun.security.util.ResourcesMgr.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         4: .line 1408
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            aastore
            astore 3 /* source */
        start local 3 // java.lang.Object[] source
         5: .line 1409
            new java.lang.SecurityException
            dup
            aload 2 /* form */
            aload 3 /* source */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.Object[] source
        end local 2 // java.text.MessageFormat form
         6: .line 1412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.set:Ljava/util/Set;
            aload 1 /* o */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // javax.security.auth.Subject$ClassSet this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljavax/security/auth/Subject$ClassSet<TT;>;
            0    7     1       o  TT;
            4    6     2    form  Ljava/text/MessageFormat;
            5    6     3  source  [Ljava/lang/Object;
    Signature: (TT;)Z
    MethodParameters:
      Name  Flags
      o     
}
Signature: <T:Ljava/lang/Object;>Ljava/util/AbstractSet<TT;>;
SourceFile: "Subject.java"
NestHost: javax.security.auth.Subject
InnerClasses:
  private ClassSet = javax.security.auth.Subject$ClassSet of javax.security.auth.Subject
  javax.security.auth.Subject$ClassSet$1