public class javax.security.auth.SubjectDomainCombiner implements java.security.DomainCombiner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.security.auth.SubjectDomainCombiner
  super_class: java.lang.Object
{
  private javax.security.auth.Subject subject;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap<java.security.ProtectionDomain, java.security.ProtectionDomain> cachedPDs;
    descriptor: Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap<Ljava/security/ProtectionDomain;Ljava/security/ProtectionDomain;>;

  private java.util.Set<java.security.Principal> principalSet;
    descriptor: Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Set<Ljava/security/Principal;>;

  private java.security.Principal[] principals;
    descriptor: [Ljava/security/Principal;
    flags: (0x0002) ACC_PRIVATE

  private static final sun.security.util.Debug debug;
    descriptor: Lsun/security/util/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 52
            ldc "combiner"
         1: .line 53
            ldc "\t[SubjectDomainCombiner]"
         2: .line 52
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
         3: .line 51
            putstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
         4: .line 53
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(javax.security.auth.Subject);
    descriptor: (Ljavax/security/auth/Subject;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // javax.security.auth.SubjectDomainCombiner this
        start local 1 // javax.security.auth.Subject subject
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
         2: .line 47
            new javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap
            dup
            invokespecial javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.<init>:()V
            putfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
         3: .line 63
            aload 0 /* this */
            aload 1 /* subject */
            putfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
         4: .line 65
            aload 1 /* subject */
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 9
         5: .line 66
            aload 0 /* this */
            aload 1 /* subject */
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            putfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
         6: .line 67
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
         7: .line 68
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
         8: .line 67
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.Principal[]
            putfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
         9: .line 70
      StackMap locals: javax.security.auth.SubjectDomainCombiner javax.security.auth.Subject
      StackMap stack:
            return
        end local 1 // javax.security.auth.Subject subject
        end local 0 // javax.security.auth.SubjectDomainCombiner this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Ljavax/security/auth/SubjectDomainCombiner;
            0   10     1  subject  Ljavax/security/auth/Subject;
    MethodParameters:
         Name  Flags
      subject  

  public javax.security.auth.Subject getSubject();
    descriptor: ()Ljavax/security/auth/Subject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // javax.security.auth.SubjectDomainCombiner this
         0: .line 86
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sm */
        start local 1 // java.lang.SecurityManager sm
         1: .line 87
            aload 1 /* sm */
            ifnull 5
         2: .line 88
            aload 1 /* sm */
            new javax.security.auth.AuthPermission
            dup
         3: .line 89
            ldc "getSubjectFromDomainCombiner"
            invokespecial javax.security.auth.AuthPermission.<init>:(Ljava/lang/String;)V
         4: .line 88
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 91
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            areturn
        end local 1 // java.lang.SecurityManager sm
        end local 0 // javax.security.auth.SubjectDomainCombiner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljavax/security/auth/SubjectDomainCombiner;
            1    6     1    sm  Ljava/lang/SecurityManager;

  public java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
    descriptor: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=11, args_size=3
        start local 0 // javax.security.auth.SubjectDomainCombiner this
        start local 1 // java.security.ProtectionDomain[] currentDomains
        start local 2 // java.security.ProtectionDomain[] assignedDomains
         0: .line 142
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 8
         1: .line 143
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            ifnonnull 4
         2: .line 144
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "null subject"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         3: .line 145
            goto 7
         4: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            astore 3 /* s */
        start local 3 // javax.security.auth.Subject s
         5: .line 148
            new javax.security.auth.SubjectDomainCombiner$1
            dup
            aload 0 /* this */
            aload 3 /* s */
            invokespecial javax.security.auth.SubjectDomainCombiner$1.<init>:(Ljavax/security/auth/SubjectDomainCombiner;Ljavax/security/auth/Subject;)V
         6: .line 147
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 3 // javax.security.auth.Subject s
         7: .line 155
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            aload 2 /* assignedDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.printInputDomains:([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)V
         8: .line 158
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnull 9
            aload 1 /* currentDomains */
            arraylength
            ifne 10
         9: .line 168
      StackMap locals:
      StackMap stack:
            aload 2 /* assignedDomains */
            areturn
        10: .line 176
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 1 /* currentDomains */
        11: .line 177
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 14
        12: .line 178
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "after optimize"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        13: .line 179
            aload 1 /* currentDomains */
            aload 2 /* assignedDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.printInputDomains:([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)V
        14: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 16
            aload 2 /* assignedDomains */
            ifnonnull 16
        15: .line 183
            aconst_null
            areturn
        16: .line 186
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 17
            iconst_0
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 1 /* currentDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
        18: istore 3 /* cLen */
        start local 3 // int cLen
        19: .line 187
            aload 2 /* assignedDomains */
            ifnonnull 20
            iconst_0
            goto 21
      StackMap locals: int
      StackMap stack:
        20: aload 2 /* assignedDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
        21: istore 4 /* aLen */
        start local 4 // int aLen
        22: .line 191
            iload 3 /* cLen */
            iload 4 /* aLen */
            iadd
            anewarray java.security.ProtectionDomain
            astore 5 /* newDomains */
        start local 5 // java.security.ProtectionDomain[] newDomains
        23: .line 193
            iconst_1
            istore 6 /* allNew */
        start local 6 // boolean allNew
        24: .line 194
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            dup
            astore 7
            monitorenter
        25: .line 195
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifne 40
        26: .line 196
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.equals:(Ljava/lang/Object;)Z
            ifne 40
        27: .line 199
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 8 /* newSet */
        start local 8 // java.util.Set newSet
        28: .line 200
            aload 8 /* newSet */
            dup
            astore 9
            monitorenter
        29: .line 201
            aload 0 /* this */
            new java.util.HashSet
            dup
            aload 8 /* newSet */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            putfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        30: .line 200
            aload 9
            monitorexit
        31: goto 34
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] int javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap java.util.Set java.util.Set
      StackMap stack: java.lang.Throwable
        32: aload 9
            monitorexit
        33: athrow
        34: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        35: .line 204
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
        36: .line 203
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.Principal[]
            putfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        37: .line 205
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.clear:()V
        38: .line 207
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 40
        39: .line 208
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "Subject mutated - clearing cache"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 8 // java.util.Set newSet
        40: .line 213
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        41: goto 58
        42: .line 214
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] int javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap top int
      StackMap stack:
            aload 1 /* currentDomains */
            iload 9 /* i */
            aaload
            astore 10 /* pd */
        start local 10 // java.security.ProtectionDomain pd
        43: .line 216
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            aload 10 /* pd */
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.ProtectionDomain
            astore 8 /* subjectPd */
        start local 8 // java.security.ProtectionDomain subjectPd
        44: .line 218
            aload 8 /* subjectPd */
            ifnonnull 55
        45: .line 219
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.staticPermissionsOnly:()Z
            ifeq 48
        46: .line 221
            aload 10 /* pd */
            astore 8 /* subjectPd */
        47: .line 222
            goto 53
        48: .line 223
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] int javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap java.security.ProtectionDomain int java.security.ProtectionDomain
      StackMap stack:
            new java.security.ProtectionDomain
            dup
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
        49: .line 224
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
        50: .line 225
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getClassLoader:()Ljava/lang/ClassLoader;
        51: .line 226
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        52: .line 223
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
            astore 8 /* subjectPd */
        53: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            aload 10 /* pd */
            aload 8 /* subjectPd */
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.putValue:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        54: .line 229
            goto 56
        55: .line 230
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* allNew */
        56: .line 232
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            iload 9 /* i */
            aload 8 /* subjectPd */
            aastore
        end local 10 // java.security.ProtectionDomain pd
        57: .line 213
            iinc 9 /* i */ 1
        end local 8 // java.security.ProtectionDomain subjectPd
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] int javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap top int
      StackMap stack:
        58: iload 9 /* i */
            iload 3 /* cLen */
            if_icmplt 42
        end local 9 // int i
        59: .line 194
            aload 7
            monitorexit
        60: goto 63
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] int javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap
      StackMap stack: java.lang.Throwable
        61: aload 7
            monitorexit
        62: athrow
        63: .line 236
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 72
        64: .line 237
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "updated current: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        65: .line 238
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        66: goto 71
        67: .line 239
      StackMap locals: int
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "\tupdated["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        68: .line 240
            aload 5 /* newDomains */
            iload 7 /* i */
            aaload
            invokestatic javax.security.auth.SubjectDomainCombiner.printDomain:(Ljava/security/ProtectionDomain;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        69: .line 239
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        70: .line 238
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        71: iload 7 /* i */
            iload 3 /* cLen */
            if_icmplt 67
        end local 7 // int i
        72: .line 245
      StackMap locals:
      StackMap stack:
            iload 4 /* aLen */
            ifle 76
        73: .line 246
            aload 2 /* assignedDomains */
            iconst_0
            aload 5 /* newDomains */
            iload 3 /* cLen */
            iload 4 /* aLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        74: .line 249
            iload 6 /* allNew */
            ifne 76
        75: .line 250
            aload 5 /* newDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 5 /* newDomains */
        76: .line 256
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 88
        77: .line 257
            aload 5 /* newDomains */
            ifnull 78
            aload 5 /* newDomains */
            arraylength
            ifne 80
        78: .line 258
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "returning null"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        79: .line 259
            goto 88
        80: .line 260
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "combinedDomains: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        81: .line 261
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        82: goto 87
        83: .line 262
      StackMap locals: int
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "newDomain "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        84: .line 263
            aload 5 /* newDomains */
            iload 7 /* i */
            aaload
            invokestatic javax.security.auth.SubjectDomainCombiner.printDomain:(Ljava/security/ProtectionDomain;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        85: .line 262
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        86: .line 261
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        87: iload 7 /* i */
            aload 5 /* newDomains */
            arraylength
            if_icmplt 83
        end local 7 // int i
        88: .line 269
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            ifnull 89
            aload 5 /* newDomains */
            arraylength
            ifne 90
        89: .line 270
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        90: .line 272
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            areturn
        end local 6 // boolean allNew
        end local 5 // java.security.ProtectionDomain[] newDomains
        end local 4 // int aLen
        end local 3 // int cLen
        end local 2 // java.security.ProtectionDomain[] assignedDomains
        end local 1 // java.security.ProtectionDomain[] currentDomains
        end local 0 // javax.security.auth.SubjectDomainCombiner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   91     0             this  Ljavax/security/auth/SubjectDomainCombiner;
            0   91     1   currentDomains  [Ljava/security/ProtectionDomain;
            0   91     2  assignedDomains  [Ljava/security/ProtectionDomain;
            5    7     3                s  Ljavax/security/auth/Subject;
           19   91     3             cLen  I
           22   91     4             aLen  I
           23   91     5       newDomains  [Ljava/security/ProtectionDomain;
           24   91     6           allNew  Z
           28   40     8           newSet  Ljava/util/Set<Ljava/security/Principal;>;
           44   58     8        subjectPd  Ljava/security/ProtectionDomain;
           41   59     9                i  I
           43   57    10               pd  Ljava/security/ProtectionDomain;
           66   72     7                i  I
           82   88     7                i  I
      Exception table:
        from    to  target  type
          29    31      32  any
          32    33      32  any
          25    60      61  any
          61    62      61  any
    MethodParameters:
                 Name  Flags
      currentDomains   
      assignedDomains  

  private static java.security.ProtectionDomain[] optimize(java.security.ProtectionDomain[]);
    descriptor: ([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.security.ProtectionDomain[] domains
         0: .line 277
            aload 0 /* domains */
            ifnull 1
            aload 0 /* domains */
            arraylength
            ifne 2
         1: .line 278
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* domains */
            arraylength
            anewarray java.security.ProtectionDomain
            astore 1 /* optimized */
        start local 1 // java.security.ProtectionDomain[] optimized
         3: .line 282
            iconst_0
            istore 3 /* num */
        start local 3 // int num
         4: .line 283
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 19
         6: .line 292
      StackMap locals: java.security.ProtectionDomain[] java.security.ProtectionDomain[] top int int
      StackMap stack:
            aload 0 /* domains */
            iload 4 /* i */
            aaload
            dup
            astore 2 /* pd */
        start local 2 // java.security.ProtectionDomain pd
         7: ifnull 18
         8: .line 295
            iconst_0
            istore 5 /* found */
        start local 5 // boolean found
         9: .line 296
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        10: goto 15
        11: .line 297
      StackMap locals: java.security.ProtectionDomain[] java.security.ProtectionDomain[] java.security.ProtectionDomain int int int int
      StackMap stack:
            aload 1 /* optimized */
            iload 6 /* j */
            aaload
            aload 2 /* pd */
            if_acmpne 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: istore 5 /* found */
        14: .line 296
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        15: iload 6 /* j */
            iload 3 /* num */
            if_icmpge 16
            iload 5 /* found */
            ifeq 11
        end local 6 // int j
        16: .line 299
      StackMap locals:
      StackMap stack:
            iload 5 /* found */
            ifne 18
        17: .line 300
            aload 1 /* optimized */
            iload 3 /* num */
            iinc 3 /* num */ 1
            aload 2 /* pd */
            aastore
        end local 5 // boolean found
        18: .line 283
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
        end local 2 // java.security.ProtectionDomain pd
      StackMap locals: java.security.ProtectionDomain[] java.security.ProtectionDomain[] top int int
      StackMap stack:
        19: iload 4 /* i */
            aload 0 /* domains */
            arraylength
            if_icmplt 6
        end local 4 // int i
        20: .line 306
            iload 3 /* num */
            ifle 24
            iload 3 /* num */
            aload 0 /* domains */
            arraylength
            if_icmpge 24
        21: .line 307
            iload 3 /* num */
            anewarray java.security.ProtectionDomain
            astore 4 /* downSize */
        start local 4 // java.security.ProtectionDomain[] downSize
        22: .line 308
            aload 1 /* optimized */
            iconst_0
            aload 4 /* downSize */
            iconst_0
            aload 4 /* downSize */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        23: .line 309
            aload 4 /* downSize */
            astore 1 /* optimized */
        end local 4 // java.security.ProtectionDomain[] downSize
        24: .line 312
      StackMap locals:
      StackMap stack:
            iload 3 /* num */
            ifeq 25
            aload 1 /* optimized */
            arraylength
            ifne 26
      StackMap locals:
      StackMap stack:
        25: aconst_null
            goto 27
      StackMap locals:
      StackMap stack:
        26: aload 1 /* optimized */
      StackMap locals:
      StackMap stack: java.security.ProtectionDomain[]
        27: areturn
        end local 3 // int num
        end local 1 // java.security.ProtectionDomain[] optimized
        end local 0 // java.security.ProtectionDomain[] domains
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0    domains  [Ljava/security/ProtectionDomain;
            3   28     1  optimized  [Ljava/security/ProtectionDomain;
            7   19     2         pd  Ljava/security/ProtectionDomain;
            4   28     3        num  I
            5   20     4          i  I
            9   18     5      found  Z
           10   16     6          j  I
           22   24     4   downSize  [Ljava/security/ProtectionDomain;
    MethodParameters:
         Name  Flags
      domains  

  private static void printInputDomains(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
    descriptor: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.security.ProtectionDomain[] currentDomains
        start local 1 // java.security.ProtectionDomain[] assignedDomains
         0: .line 317
            aload 0 /* currentDomains */
            ifnull 1
            aload 0 /* currentDomains */
            arraylength
            ifne 3
         1: .line 318
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "currentDomains null or 0 length"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         2: .line 319
            goto 15
         3: .line 320
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 12
         5: .line 322
      StackMap locals: int
      StackMap stack:
            aload 0 /* currentDomains */
            iload 2 /* i */
            aaload
            ifnonnull 8
         6: .line 323
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "currentDomain "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": SystemDomain"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         7: .line 324
            goto 11
         8: .line 325
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "currentDomain "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 326
            aload 0 /* currentDomains */
            iload 2 /* i */
            aaload
            invokestatic javax.security.auth.SubjectDomainCombiner.printDomain:(Ljava/security/ProtectionDomain;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 325
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        11: .line 321
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        12: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* currentDomains */
            ifnull 15
        13: .line 321
            iload 2 /* i */
            aload 0 /* currentDomains */
            arraylength
        14: .line 320
            if_icmplt 5
        end local 2 // int i
        15: .line 331
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 16
            aload 1 /* assignedDomains */
            arraylength
            ifne 18
        16: .line 332
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "assignedDomains null or 0 length"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        17: .line 333
            goto 31
        18: .line 334
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "assignedDomains = "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        19: .line 335
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        20: goto 28
        21: .line 337
      StackMap locals: int
      StackMap stack:
            aload 1 /* assignedDomains */
            iload 2 /* i */
            aaload
            ifnonnull 24
        22: .line 338
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "assignedDomain "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": SystemDomain"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        23: .line 339
            goto 27
        24: .line 340
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "assignedDomain "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 341
            aload 1 /* assignedDomains */
            iload 2 /* i */
            aaload
            invokestatic javax.security.auth.SubjectDomainCombiner.printDomain:(Ljava/security/ProtectionDomain;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 340
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        27: .line 336
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        28: .line 335
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 31
        29: .line 336
            iload 2 /* i */
            aload 1 /* assignedDomains */
            arraylength
        30: .line 335
            if_icmplt 21
        end local 2 // int i
        31: .line 345
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.security.ProtectionDomain[] assignedDomains
        end local 0 // java.security.ProtectionDomain[] currentDomains
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   32     0   currentDomains  [Ljava/security/ProtectionDomain;
            0   32     1  assignedDomains  [Ljava/security/ProtectionDomain;
            4   15     2                i  I
           20   31     2                i  I
    MethodParameters:
                 Name  Flags
      currentDomains   
      assignedDomains  

  private static java.lang.String printDomain(java.security.ProtectionDomain);
    descriptor: (Ljava/security/ProtectionDomain;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.security.ProtectionDomain pd
         0: .line 348
            aload 0 /* pd */
            ifnonnull 2
         1: .line 349
            ldc "null"
            areturn
         2: .line 351
      StackMap locals:
      StackMap stack:
            new javax.security.auth.SubjectDomainCombiner$2
            dup
            aload 0 /* pd */
            invokespecial javax.security.auth.SubjectDomainCombiner$2.<init>:(Ljava/security/ProtectionDomain;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            areturn
        end local 0 // java.security.ProtectionDomain pd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    pd  Ljava/security/ProtectionDomain;
    MethodParameters:
      Name  Flags
      pd    final
}
SourceFile: "SubjectDomainCombiner.java"
NestMembers:
  javax.security.auth.SubjectDomainCombiner$1  javax.security.auth.SubjectDomainCombiner$2  javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap
InnerClasses:
  javax.security.auth.SubjectDomainCombiner$1
  javax.security.auth.SubjectDomainCombiner$2
  private WeakKeyValueMap = javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap of javax.security.auth.SubjectDomainCombiner