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

  private static final boolean useJavaxPolicy;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean allowCaching;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.misc.JavaSecurityProtectionDomainAccess pdAccess;
    descriptor: Lsun/misc/JavaSecurityProtectionDomainAccess;
    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 58
            ldc "combiner"
         1: .line 59
            ldc "\t[SubjectDomainCombiner]"
         2: .line 58
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
         3: .line 57
            putstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
         4: .line 63
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            invokestatic javax.security.auth.Policy.isCustomPolicySet:(Lsun/security/util/Debug;)Z
         5: .line 62
            putstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
         6: .line 67
            getstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
            ifeq 8
            invokestatic javax.security.auth.SubjectDomainCombiner.cachePolicy:()Z
            ifeq 8
         7: .line 66
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: putstatic javax.security.auth.SubjectDomainCombiner.allowCaching:Z
        10: .line 70
            invokestatic sun.misc.SharedSecrets.getJavaSecurityProtectionDomainAccess:()Lsun/misc/JavaSecurityProtectionDomainAccess;
        11: .line 69
            putstatic javax.security.auth.SubjectDomainCombiner.pdAccess:Lsun/misc/JavaSecurityProtectionDomainAccess;
        12: .line 70
            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 81
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
         2: .line 53
            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 82
            aload 0 /* this */
            aload 1 /* subject */
            putfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
         4: .line 84
            aload 1 /* subject */
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 9
         5: .line 85
            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 86
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
         7: .line 87
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
         8: .line 86
            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 89
      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 107
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sm */
        start local 1 // java.lang.SecurityManager sm
         1: .line 108
            aload 1 /* sm */
            ifnull 5
         2: .line 109
            aload 1 /* sm */
            new javax.security.auth.AuthPermission
            dup
         3: .line 110
            ldc "getSubjectFromDomainCombiner"
            invokespecial javax.security.auth.AuthPermission.<init>:(Ljava/lang/String;)V
         4: .line 109
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 112
      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 163
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 8
         1: .line 164
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            ifnonnull 4
         2: .line 165
            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 166
            goto 7
         4: .line 167
      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 169
            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 168
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 3 // javax.security.auth.Subject s
         7: .line 176
      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 179
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnull 9
            aload 1 /* currentDomains */
            arraylength
            ifne 10
         9: .line 189
      StackMap locals:
      StackMap stack:
            aload 2 /* assignedDomains */
            areturn
        10: .line 197
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 1 /* currentDomains */
        11: .line 198
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 14
        12: .line 199
            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 200
            aload 1 /* currentDomains */
            aload 2 /* assignedDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.printInputDomains:([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)V
        14: .line 203
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 16
            aload 2 /* assignedDomains */
            ifnonnull 16
        15: .line 204
            aconst_null
            areturn
        16: .line 209
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
            ifeq 18
        17: .line 210
            aload 0 /* this */
            aload 1 /* currentDomains */
            aload 2 /* assignedDomains */
            invokevirtual javax.security.auth.SubjectDomainCombiner.combineJavaxPolicy:([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            areturn
        18: .line 213
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 19
            iconst_0
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 1 /* currentDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
        20: istore 3 /* cLen */
        start local 3 // int cLen
        21: .line 214
            aload 2 /* assignedDomains */
            ifnonnull 22
            iconst_0
            goto 23
      StackMap locals: int
      StackMap stack:
        22: aload 2 /* assignedDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
        23: istore 4 /* aLen */
        start local 4 // int aLen
        24: .line 218
            iload 3 /* cLen */
            iload 4 /* aLen */
            iadd
            anewarray java.security.ProtectionDomain
            astore 5 /* newDomains */
        start local 5 // java.security.ProtectionDomain[] newDomains
        25: .line 220
            iconst_1
            istore 6 /* allNew */
        start local 6 // boolean allNew
        26: .line 221
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            dup
            astore 7
            monitorenter
        27: .line 222
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifne 42
        28: .line 223
            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 42
        29: .line 226
            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
        30: .line 227
            aload 8 /* newSet */
            dup
            astore 9
            monitorenter
        31: .line 228
            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;
        32: .line 227
            aload 9
            monitorexit
        33: goto 36
      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
        34: aload 9
            monitorexit
        35: athrow
        36: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        37: .line 231
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
        38: .line 230
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.Principal[]
            putfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        39: .line 232
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.clear:()V
        40: .line 234
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 42
        41: .line 235
            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
        42: .line 240
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        43: goto 62
        44: .line 241
      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
        45: .line 243
            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
        46: .line 245
            aload 8 /* subjectPd */
            ifnonnull 59
        47: .line 246
            getstatic javax.security.auth.SubjectDomainCombiner.pdAccess:Lsun/misc/JavaSecurityProtectionDomainAccess;
            aload 10 /* pd */
            invokeinterface sun.misc.JavaSecurityProtectionDomainAccess.getStaticPermissionsField:(Ljava/security/ProtectionDomain;)Z
            ifeq 52
        48: .line 248
            new java.security.ProtectionDomain
            dup
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
        49: .line 249
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
        50: .line 248
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V
            astore 8 /* subjectPd */
        51: .line 250
            goto 57
        52: .line 251
      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;
        53: .line 252
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
        54: .line 253
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getClassLoader:()Ljava/lang/ClassLoader;
        55: .line 254
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        56: .line 251
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
            astore 8 /* subjectPd */
        57: .line 256
      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
        58: .line 257
            goto 60
        59: .line 258
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* allNew */
        60: .line 260
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            iload 9 /* i */
            aload 8 /* subjectPd */
            aastore
        end local 10 // java.security.ProtectionDomain pd
        61: .line 240
            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:
        62: iload 9 /* i */
            iload 3 /* cLen */
            if_icmplt 44
        end local 9 // int i
        63: .line 221
            aload 7
            monitorexit
        64: goto 67
      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
        65: aload 7
            monitorexit
        66: athrow
        67: .line 264
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 76
        68: .line 265
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "updated current: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        69: .line 266
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        70: goto 75
        71: .line 267
      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;
        72: .line 268
            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;
        73: .line 267
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        74: .line 266
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        75: iload 7 /* i */
            iload 3 /* cLen */
            if_icmplt 71
        end local 7 // int i
        76: .line 273
      StackMap locals:
      StackMap stack:
            iload 4 /* aLen */
            ifle 80
        77: .line 274
            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
        78: .line 277
            iload 6 /* allNew */
            ifne 80
        79: .line 278
            aload 5 /* newDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 5 /* newDomains */
        80: .line 284
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 92
        81: .line 285
            aload 5 /* newDomains */
            ifnull 82
            aload 5 /* newDomains */
            arraylength
            ifne 84
        82: .line 286
      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
        83: .line 287
            goto 92
        84: .line 288
      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
        85: .line 289
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        86: goto 91
        87: .line 290
      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;
        88: .line 291
            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;
        89: .line 290
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        90: .line 289
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        91: iload 7 /* i */
            aload 5 /* newDomains */
            arraylength
            if_icmplt 87
        end local 7 // int i
        92: .line 297
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            ifnull 93
            aload 5 /* newDomains */
            arraylength
            ifne 94
        93: .line 298
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        94: .line 300
      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   95     0             this  Ljavax/security/auth/SubjectDomainCombiner;
            0   95     1   currentDomains  [Ljava/security/ProtectionDomain;
            0   95     2  assignedDomains  [Ljava/security/ProtectionDomain;
            5    7     3                s  Ljavax/security/auth/Subject;
           21   95     3             cLen  I
           24   95     4             aLen  I
           25   95     5       newDomains  [Ljava/security/ProtectionDomain;
           26   95     6           allNew  Z
           30   42     8           newSet  Ljava/util/Set<Ljava/security/Principal;>;
           46   62     8        subjectPd  Ljava/security/ProtectionDomain;
           43   63     9                i  I
           45   61    10               pd  Ljava/security/ProtectionDomain;
           70   76     7                i  I
           86   92     7                i  I
      Exception table:
        from    to  target  type
          31    33      34  any
          34    35      34  any
          27    64      65  any
          65    66      65  any
    MethodParameters:
                 Name  Flags
      currentDomains   
      assignedDomains  

  private java.security.ProtectionDomain[] combineJavaxPolicy(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
    descriptor: ([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=18, 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 311
            getstatic javax.security.auth.SubjectDomainCombiner.allowCaching:Z
            ifne 3
         1: .line 313
            new javax.security.auth.SubjectDomainCombiner$2
            dup
            aload 0 /* this */
            invokespecial javax.security.auth.SubjectDomainCombiner$2.<init>:(Ljavax/security/auth/SubjectDomainCombiner;)V
         2: .line 312
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         3: .line 322
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 4
            iconst_0
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 1 /* currentDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
         5: istore 3 /* cLen */
        start local 3 // int cLen
         6: .line 323
            aload 2 /* assignedDomains */
            ifnonnull 7
            iconst_0
            goto 8
      StackMap locals: int
      StackMap stack:
         7: aload 2 /* assignedDomains */
            arraylength
      StackMap locals:
      StackMap stack: int
         8: istore 4 /* aLen */
        start local 4 // int aLen
         9: .line 327
            iload 3 /* cLen */
            iload 4 /* aLen */
            iadd
            anewarray java.security.ProtectionDomain
            astore 5 /* newDomains */
        start local 5 // java.security.ProtectionDomain[] newDomains
        10: .line 329
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            dup
            astore 6
            monitorenter
        11: .line 330
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifne 26
        12: .line 331
            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 26
        13: .line 334
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 7 /* newSet */
        start local 7 // java.util.Set newSet
        14: .line 335
            aload 7 /* newSet */
            dup
            astore 8
            monitorenter
        15: .line 336
            aload 0 /* this */
            new java.util.HashSet
            dup
            aload 7 /* newSet */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            putfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        16: .line 335
            aload 8
            monitorexit
        17: goto 20
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap java.util.Set java.util.Set
      StackMap stack: java.lang.Throwable
        18: aload 8
            monitorexit
        19: athrow
        20: .line 338
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        21: .line 339
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
        22: .line 338
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.Principal[]
            putfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        23: .line 340
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.clear:()V
        24: .line 342
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 26
        25: .line 343
            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 7 // java.util.Set newSet
        26: .line 347
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        27: goto 77
        28: .line 348
      StackMap locals: int
      StackMap stack:
            aload 1 /* currentDomains */
            iload 7 /* i */
            aaload
            astore 8 /* pd */
        start local 8 // java.security.ProtectionDomain pd
        29: .line 349
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            aload 8 /* pd */
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.ProtectionDomain
            astore 9 /* subjectPd */
        start local 9 // java.security.ProtectionDomain subjectPd
        30: .line 351
            aload 9 /* subjectPd */
            ifnonnull 75
        31: .line 352
            getstatic javax.security.auth.SubjectDomainCombiner.pdAccess:Lsun/misc/JavaSecurityProtectionDomainAccess;
            aload 8 /* pd */
            invokeinterface sun.misc.JavaSecurityProtectionDomainAccess.getStaticPermissionsField:(Ljava/security/ProtectionDomain;)Z
            ifeq 36
        32: .line 354
            new java.security.ProtectionDomain
            dup
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
        33: .line 355
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
        34: .line 354
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V
            astore 9 /* subjectPd */
        35: .line 356
            goto 73
        36: .line 364
      StackMap locals: java.security.ProtectionDomain java.security.ProtectionDomain
      StackMap stack:
            new java.security.Permissions
            dup
            invokespecial java.security.Permissions.<init>:()V
            astore 10 /* perms */
        start local 10 // java.security.Permissions perms
        37: .line 365
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
            astore 11 /* coll */
        start local 11 // java.security.PermissionCollection coll
        38: .line 367
            aload 11 /* coll */
            ifnull 50
        39: .line 368
            aload 11 /* coll */
            dup
            astore 13
            monitorenter
        40: .line 369
            aload 11 /* coll */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 12 /* e */
        start local 12 // java.util.Enumeration e
        41: .line 370
            goto 45
        42: .line 372
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection java.util.Enumeration java.security.PermissionCollection
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.security.Permission
        43: .line 371
            astore 14 /* newPerm */
        start local 14 // java.security.Permission newPerm
        44: .line 373
            aload 10 /* perms */
            aload 14 /* newPerm */
            invokevirtual java.security.Permissions.add:(Ljava/security/Permission;)V
        end local 14 // java.security.Permission newPerm
        45: .line 370
      StackMap locals:
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 42
        46: .line 368
            aload 13
            monitorexit
        47: goto 50
        end local 12 // java.util.Enumeration e
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection top java.security.PermissionCollection
      StackMap stack: java.lang.Throwable
        48: aload 13
            monitorexit
        49: athrow
        50: .line 379
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection
      StackMap stack:
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
            astore 13 /* finalCs */
        start local 13 // java.security.CodeSource finalCs
        51: .line 380
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            astore 14 /* finalS */
        start local 14 // javax.security.auth.Subject finalS
        52: .line 383
            new javax.security.auth.SubjectDomainCombiner$3
            dup
            aload 0 /* this */
            aload 14 /* finalS */
            aload 13 /* finalCs */
            invokespecial javax.security.auth.SubjectDomainCombiner$3.<init>:(Ljavax/security/auth/SubjectDomainCombiner;Ljavax/security/auth/Subject;Ljava/security/CodeSource;)V
        53: .line 382
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
        54: .line 381
            astore 15 /* newPerms */
        start local 15 // java.security.PermissionCollection newPerms
        55: .line 394
            aload 15 /* newPerms */
            dup
            astore 16
            monitorenter
        56: .line 395
            aload 15 /* newPerms */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 12 /* e */
        start local 12 // java.util.Enumeration e
        57: .line 396
            goto 65
        58: .line 397
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection java.util.Enumeration java.security.CodeSource javax.security.auth.Subject java.security.PermissionCollection java.security.PermissionCollection
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.security.Permission
            astore 17 /* newPerm */
        start local 17 // java.security.Permission newPerm
        59: .line 398
            aload 10 /* perms */
            aload 17 /* newPerm */
            invokevirtual java.security.Permissions.implies:(Ljava/security/Permission;)Z
            ifne 65
        60: .line 399
            aload 10 /* perms */
            aload 17 /* newPerm */
            invokevirtual java.security.Permissions.add:(Ljava/security/Permission;)V
        61: .line 400
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 65
        62: .line 401
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
        63: .line 402
            new java.lang.StringBuilder
            dup
            ldc "Adding perm "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 17 /* newPerm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        64: .line 401
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 17 // java.security.Permission newPerm
        65: .line 396
      StackMap locals:
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 58
        66: .line 394
            aload 16
            monitorexit
        67: goto 70
        end local 12 // java.util.Enumeration e
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection top java.security.CodeSource javax.security.auth.Subject java.security.PermissionCollection java.security.PermissionCollection
      StackMap stack: java.lang.Throwable
        68: aload 16
            monitorexit
        69: athrow
        start local 12 // java.util.Enumeration e
        70: .line 406
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain java.security.Permissions java.security.PermissionCollection java.util.Enumeration java.security.CodeSource javax.security.auth.Subject java.security.PermissionCollection
      StackMap stack:
            new java.security.ProtectionDomain
            dup
        71: .line 407
            aload 13 /* finalCs */
            aload 10 /* perms */
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getClassLoader:()Ljava/lang/ClassLoader;
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        72: .line 406
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
            astore 9 /* subjectPd */
        end local 15 // java.security.PermissionCollection newPerms
        end local 14 // javax.security.auth.Subject finalS
        end local 13 // java.security.CodeSource finalCs
        end local 12 // java.util.Enumeration e
        end local 11 // java.security.PermissionCollection coll
        end local 10 // java.security.Permissions perms
        73: .line 409
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap int java.security.ProtectionDomain java.security.ProtectionDomain
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.allowCaching:Z
            ifeq 75
        74: .line 410
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            aload 8 /* pd */
            aload 9 /* subjectPd */
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.putValue:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        75: .line 412
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            iload 7 /* i */
            aload 9 /* subjectPd */
            aastore
        end local 9 // java.security.ProtectionDomain subjectPd
        end local 8 // java.security.ProtectionDomain pd
        76: .line 347
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        77: iload 7 /* i */
            iload 3 /* cLen */
            if_icmplt 28
        end local 7 // int i
        78: .line 329
            aload 6
            monitorexit
        79: goto 82
      StackMap locals: javax.security.auth.SubjectDomainCombiner java.security.ProtectionDomain[] java.security.ProtectionDomain[] int int java.security.ProtectionDomain[] javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap
      StackMap stack: java.lang.Throwable
        80: aload 6
            monitorexit
        81: athrow
        82: .line 416
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 89
        83: .line 417
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "updated current: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        84: .line 418
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        85: goto 88
        86: .line 419
      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 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* newDomains */
            iload 6 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        87: .line 418
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        88: iload 6 /* i */
            iload 3 /* cLen */
            if_icmplt 86
        end local 6 // int i
        89: .line 424
      StackMap locals:
      StackMap stack:
            iload 4 /* aLen */
            ifle 91
        90: .line 425
            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
        91: .line 428
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 103
        92: .line 429
            aload 5 /* newDomains */
            ifnull 93
            aload 5 /* newDomains */
            arraylength
            ifne 95
        93: .line 430
      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
        94: .line 431
            goto 103
        95: .line 432
      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
        96: .line 433
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        97: goto 102
        98: .line 434
      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 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        99: .line 435
            aload 5 /* newDomains */
            iload 6 /* i */
            aaload
            invokevirtual java.security.ProtectionDomain.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       100: .line 434
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
       101: .line 433
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
       102: iload 6 /* i */
            aload 5 /* newDomains */
            arraylength
            if_icmplt 98
        end local 6 // int i
       103: .line 441
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            ifnull 104
            aload 5 /* newDomains */
            arraylength
            ifne 105
       104: .line 442
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
       105: .line 444
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            areturn
        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  106     0             this  Ljavax/security/auth/SubjectDomainCombiner;
            0  106     1   currentDomains  [Ljava/security/ProtectionDomain;
            0  106     2  assignedDomains  [Ljava/security/ProtectionDomain;
            6  106     3             cLen  I
            9  106     4             aLen  I
           10  106     5       newDomains  [Ljava/security/ProtectionDomain;
           14   26     7           newSet  Ljava/util/Set<Ljava/security/Principal;>;
           27   78     7                i  I
           29   76     8               pd  Ljava/security/ProtectionDomain;
           30   76     9        subjectPd  Ljava/security/ProtectionDomain;
           37   73    10            perms  Ljava/security/Permissions;
           38   73    11             coll  Ljava/security/PermissionCollection;
           41   48    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           57   68    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           70   73    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           44   45    14          newPerm  Ljava/security/Permission;
           51   73    13          finalCs  Ljava/security/CodeSource;
           52   73    14           finalS  Ljavax/security/auth/Subject;
           55   73    15         newPerms  Ljava/security/PermissionCollection;
           59   65    17          newPerm  Ljava/security/Permission;
           85   89     6                i  I
           97  103     6                i  I
      Exception table:
        from    to  target  type
          15    17      18  any
          18    19      18  any
          40    47      48  any
          48    49      48  any
          56    67      68  any
          68    69      68  any
          11    79      80  any
          80    81      80  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 449
            aload 0 /* domains */
            ifnull 1
            aload 0 /* domains */
            arraylength
            ifne 2
         1: .line 450
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 452
      StackMap locals:
      StackMap stack:
            aload 0 /* domains */
            arraylength
            anewarray java.security.ProtectionDomain
            astore 1 /* optimized */
        start local 1 // java.security.ProtectionDomain[] optimized
         3: .line 454
            iconst_0
            istore 3 /* num */
        start local 3 // int num
         4: .line 455
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 19
         6: .line 464
      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 467
            iconst_0
            istore 5 /* found */
        start local 5 // boolean found
         9: .line 468
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        10: goto 15
        11: .line 469
      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 468
            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 471
      StackMap locals:
      StackMap stack:
            iload 5 /* found */
            ifne 18
        17: .line 472
            aload 1 /* optimized */
            iload 3 /* num */
            iinc 3 /* num */ 1
            aload 2 /* pd */
            aastore
        end local 5 // boolean found
        18: .line 455
      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 478
            iload 3 /* num */
            ifle 24
            iload 3 /* num */
            aload 0 /* domains */
            arraylength
            if_icmpge 24
        21: .line 479
            iload 3 /* num */
            anewarray java.security.ProtectionDomain
            astore 4 /* downSize */
        start local 4 // java.security.ProtectionDomain[] downSize
        22: .line 480
            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 481
            aload 4 /* downSize */
            astore 1 /* optimized */
        end local 4 // java.security.ProtectionDomain[] downSize
        24: .line 484
      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 boolean cachePolicy();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 489
            new javax.security.auth.SubjectDomainCombiner$4
            dup
            invokespecial javax.security.auth.SubjectDomainCombiner$4.<init>:()V
         1: .line 488
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 0 /* s */
        start local 0 // java.lang.String s
         2: .line 494
            aload 0 /* s */
            ifnull 4
         3: .line 495
            aload 0 /* s */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            ireturn
         4: .line 499
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    5     0     s  Ljava/lang/String;

  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 504
            aload 0 /* currentDomains */
            ifnull 1
            aload 0 /* currentDomains */
            arraylength
            ifne 3
         1: .line 505
      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 506
            goto 15
         3: .line 507
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 12
         5: .line 509
      StackMap locals: int
      StackMap stack:
            aload 0 /* currentDomains */
            iload 2 /* i */
            aaload
            ifnonnull 8
         6: .line 510
            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 511
            goto 11
         8: .line 512
      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 513
            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 512
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        11: .line 508
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        12: .line 507
      StackMap locals:
      StackMap stack:
            aload 0 /* currentDomains */
            ifnull 15
        13: .line 508
            iload 2 /* i */
            aload 0 /* currentDomains */
            arraylength
        14: .line 507
            if_icmplt 5
        end local 2 // int i
        15: .line 518
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 16
            aload 1 /* assignedDomains */
            arraylength
            ifne 18
        16: .line 519
      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 520
            goto 31
        18: .line 521
      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 522
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        20: goto 28
        21: .line 524
      StackMap locals: int
      StackMap stack:
            aload 1 /* assignedDomains */
            iload 2 /* i */
            aaload
            ifnonnull 24
        22: .line 525
            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 526
            goto 27
        24: .line 527
      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 528
            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 527
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        27: .line 523
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        28: .line 522
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 31
        29: .line 523
            iload 2 /* i */
            aload 1 /* assignedDomains */
            arraylength
        30: .line 522
            if_icmplt 21
        end local 2 // int i
        31: .line 532
      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 535
            aload 0 /* pd */
            ifnonnull 2
         1: .line 536
            ldc "null"
            areturn
         2: .line 538
      StackMap locals:
      StackMap stack:
            new javax.security.auth.SubjectDomainCombiner$5
            dup
            aload 0 /* pd */
            invokespecial javax.security.auth.SubjectDomainCombiner$5.<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$3  javax.security.auth.SubjectDomainCombiner$4  javax.security.auth.SubjectDomainCombiner$5  javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap
InnerClasses:
  javax.security.auth.SubjectDomainCombiner$1
  javax.security.auth.SubjectDomainCombiner$2
  javax.security.auth.SubjectDomainCombiner$3
  javax.security.auth.SubjectDomainCombiner$4
  javax.security.auth.SubjectDomainCombiner$5
  private WeakKeyValueMap = javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap of javax.security.auth.SubjectDomainCombiner