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 1467
            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 1468
            aload 0 /* this */
            iload 2 /* which */
            putfield javax.security.auth.Subject$ClassSet.which:I
         2: .line 1469
            aload 0 /* this */
            aload 3 /* c */
            putfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
         3: .line 1470
            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 1472
            iload 2 /* which */
            tableswitch { // 1 - 2
                    1: 5
                    2: 10
              default: 15
          }
         5: .line 1474
      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 1477
      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 1480
      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 1483
      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 1488
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.which:I
            tableswitch { // 1 - 2
                    1: 1
                    2: 3
              default: 5
          }
         1: .line 1490
      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 1491
            goto 23
        end local 1 // java.util.Iterator iterator
         3: .line 1493
      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 1494
            goto 23
        end local 1 // java.util.Iterator iterator
         5: .line 1496
      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 1503
            goto 23
         7: .line 1505
      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 1507
            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 1506
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            astore 2 /* next */
        start local 2 // java.lang.Object next
        10: .line 1512
            goto 12
        end local 2 // java.lang.Object next
        11: .line 1513
      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 1515
      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 1516
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.which:I
            iconst_3
            if_icmpeq 16
        14: .line 1517
            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 1518
            goto 23
        16: .line 1520
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
        17: .line 1521
            aload 3 /* sm */
            ifnull 22
        18: .line 1522
            aload 3 /* sm */
            new javax.security.auth.PrivateCredentialPermission
            dup
        19: .line 1523
            aload 2 /* next */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        20: .line 1524
            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 1522
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
        22: .line 1526
      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 1503
      StackMap locals:
      StackMap stack:
            aload 1 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        24: .line 1530
            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 1534
            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 1539
            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 1545
            aload 0 /* this */
            getfield javax.security.auth.Subject$ClassSet.c:Ljava/lang/Class;
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 6
         1: .line 1546
            new java.text.MessageFormat
            dup
         2: .line 1547
            ldc "attempting.to.add.an.object.which.is.not.an.instance.of.class"
         3: .line 1546
            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 1548
            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 1549
            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 1552
      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