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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            ldc "combiner"
         1: .line 57
            ldc "\t[SubjectDomainCombiner]"
         2: .line 56
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
         3: .line 55
            putstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
         4: .line 62
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            invokestatic javax.security.auth.Policy.isCustomPolicySet:(Lsun/security/util/Debug;)Z
         5: .line 61
            putstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
         6: .line 66
            getstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
            ifeq 8
            invokestatic javax.security.auth.SubjectDomainCombiner.cachePolicy:()Z
            ifeq 8
         7: .line 65
            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 66
            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 75
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 50
            aload 0 /* this */
         2: .line 51
            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 76
            aload 0 /* this */
            aload 1 /* subject */
            putfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
         4: .line 78
            aload 1 /* subject */
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 9
         5: .line 79
            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 80
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
         7: .line 81
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
         8: .line 80
            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 83
      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 99
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sm */
        start local 1 // java.lang.SecurityManager sm
         1: .line 100
            aload 1 /* sm */
            ifnull 5
         2: .line 101
            aload 1 /* sm */
            new javax.security.auth.AuthPermission
            dup
         3: .line 102
            ldc "getSubjectFromDomainCombiner"
            invokespecial javax.security.auth.AuthPermission.<init>:(Ljava/lang/String;)V
         4: .line 101
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 104
      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 155
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 8
         1: .line 156
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            ifnonnull 4
         2: .line 157
            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 158
            goto 7
         4: .line 159
      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 161
            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 160
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 3 // javax.security.auth.Subject s
         7: .line 168
      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 171
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnull 9
            aload 1 /* currentDomains */
            arraylength
            ifne 10
         9: .line 181
      StackMap locals:
      StackMap stack:
            aload 2 /* assignedDomains */
            areturn
        10: .line 189
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 1 /* currentDomains */
        11: .line 190
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 14
        12: .line 191
            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 192
            aload 1 /* currentDomains */
            aload 2 /* assignedDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.printInputDomains:([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)V
        14: .line 195
      StackMap locals:
      StackMap stack:
            aload 1 /* currentDomains */
            ifnonnull 16
            aload 2 /* assignedDomains */
            ifnonnull 16
        15: .line 196
            aconst_null
            areturn
        16: .line 201
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.useJavaxPolicy:Z
            ifeq 18
        17: .line 202
            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 205
      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 206
            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 210
            iload 3 /* cLen */
            iload 4 /* aLen */
            iadd
            anewarray java.security.ProtectionDomain
            astore 5 /* newDomains */
        start local 5 // java.security.ProtectionDomain[] newDomains
        25: .line 212
            iconst_1
            istore 6 /* allNew */
        start local 6 // boolean allNew
        26: .line 213
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            dup
            astore 7
            monitorenter
        27: .line 214
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifne 42
        28: .line 215
            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 218
            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 219
            aload 8 /* newSet */
            dup
            astore 9
            monitorenter
        31: .line 220
            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 219
            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 222
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        37: .line 223
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
        38: .line 222
            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 224
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.clear:()V
        40: .line 226
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 42
        41: .line 227
            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 232
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        43: goto 60
        44: .line 233
      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 235
            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 237
            aload 8 /* subjectPd */
            ifnonnull 57
        47: .line 238
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.staticPermissionsOnly:()Z
            ifeq 50
        48: .line 240
            aload 10 /* pd */
            astore 8 /* subjectPd */
        49: .line 241
            goto 55
        50: .line 242
      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;
        51: .line 243
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
        52: .line 244
            aload 10 /* pd */
            invokevirtual java.security.ProtectionDomain.getClassLoader:()Ljava/lang/ClassLoader;
        53: .line 245
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principals:[Ljava/security/Principal;
        54: .line 242
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V
            astore 8 /* subjectPd */
        55: .line 247
      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
        56: .line 248
            goto 58
        57: .line 249
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* allNew */
        58: .line 251
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            iload 9 /* i */
            aload 8 /* subjectPd */
            aastore
        end local 10 // java.security.ProtectionDomain pd
        59: .line 232
            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:
        60: iload 9 /* i */
            iload 3 /* cLen */
            if_icmplt 44
        end local 9 // int i
        61: .line 213
            aload 7
            monitorexit
        62: goto 65
      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
        63: aload 7
            monitorexit
        64: athrow
        65: .line 255
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 74
        66: .line 256
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "updated current: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        67: .line 257
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        68: goto 73
        69: .line 258
      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;
        70: .line 259
            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;
        71: .line 258
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        72: .line 257
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        73: iload 7 /* i */
            iload 3 /* cLen */
            if_icmplt 69
        end local 7 // int i
        74: .line 264
      StackMap locals:
      StackMap stack:
            iload 4 /* aLen */
            ifle 78
        75: .line 265
            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
        76: .line 268
            iload 6 /* allNew */
            ifne 78
        77: .line 269
            aload 5 /* newDomains */
            invokestatic javax.security.auth.SubjectDomainCombiner.optimize:([Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;
            astore 5 /* newDomains */
        78: .line 275
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 90
        79: .line 276
            aload 5 /* newDomains */
            ifnull 80
            aload 5 /* newDomains */
            arraylength
            ifne 82
        80: .line 277
      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
        81: .line 278
            goto 90
        82: .line 279
      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
        83: .line 280
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        84: goto 89
        85: .line 281
      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;
        86: .line 282
            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;
        87: .line 281
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        88: .line 280
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        89: iload 7 /* i */
            aload 5 /* newDomains */
            arraylength
            if_icmplt 85
        end local 7 // int i
        90: .line 288
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            ifnull 91
            aload 5 /* newDomains */
            arraylength
            ifne 92
        91: .line 289
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        92: .line 291
      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   93     0             this  Ljavax/security/auth/SubjectDomainCombiner;
            0   93     1   currentDomains  [Ljava/security/ProtectionDomain;
            0   93     2  assignedDomains  [Ljava/security/ProtectionDomain;
            5    7     3                s  Ljavax/security/auth/Subject;
           21   93     3             cLen  I
           24   93     4             aLen  I
           25   93     5       newDomains  [Ljava/security/ProtectionDomain;
           26   93     6           allNew  Z
           30   42     8           newSet  Ljava/util/Set<Ljava/security/Principal;>;
           46   60     8        subjectPd  Ljava/security/ProtectionDomain;
           43   61     9                i  I
           45   59    10               pd  Ljava/security/ProtectionDomain;
           68   74     7                i  I
           84   90     7                i  I
      Exception table:
        from    to  target  type
          31    33      34  any
          34    35      34  any
          27    62      63  any
          63    64      63  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 302
            getstatic javax.security.auth.SubjectDomainCombiner.allowCaching:Z
            ifne 3
         1: .line 304
            new javax.security.auth.SubjectDomainCombiner$2
            dup
            aload 0 /* this */
            invokespecial javax.security.auth.SubjectDomainCombiner$2.<init>:(Ljavax/security/auth/SubjectDomainCombiner;)V
         2: .line 303
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         3: .line 315
      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 316
            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 320
            iload 3 /* cLen */
            iload 4 /* aLen */
            iadd
            anewarray java.security.ProtectionDomain
            astore 5 /* newDomains */
        start local 5 // java.security.ProtectionDomain[] newDomains
        10: .line 322
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            dup
            astore 6
            monitorenter
        11: .line 323
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifne 26
        12: .line 324
            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 327
            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 328
            aload 7 /* newSet */
            dup
            astore 8
            monitorenter
        15: .line 329
            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 328
            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 331
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
        21: .line 332
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.principalSet:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.security.Principal
        22: .line 331
            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 333
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.cachedPDs:Ljavax/security/auth/SubjectDomainCombiner$WeakKeyValueMap;
            invokevirtual javax.security.auth.SubjectDomainCombiner$WeakKeyValueMap.clear:()V
        24: .line 335
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 26
        25: .line 336
            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 340
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        27: goto 75
        28: .line 341
      StackMap locals: int
      StackMap stack:
            aload 1 /* currentDomains */
            iload 7 /* i */
            aaload
            astore 8 /* pd */
        start local 8 // java.security.ProtectionDomain pd
        29: .line 342
            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 344
            aload 9 /* subjectPd */
            ifnonnull 73
        31: .line 345
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.staticPermissionsOnly:()Z
            ifeq 34
        32: .line 347
            aload 8 /* pd */
            astore 9 /* subjectPd */
        33: .line 348
            goto 71
        34: .line 356
      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
        35: .line 357
            aload 8 /* pd */
            invokevirtual java.security.ProtectionDomain.getPermissions:()Ljava/security/PermissionCollection;
            astore 11 /* coll */
        start local 11 // java.security.PermissionCollection coll
        36: .line 359
            aload 11 /* coll */
            ifnull 48
        37: .line 360
            aload 11 /* coll */
            dup
            astore 13
            monitorenter
        38: .line 361
            aload 11 /* coll */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 12 /* e */
        start local 12 // java.util.Enumeration e
        39: .line 362
            goto 43
        40: .line 364
      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
        41: .line 363
            astore 14 /* newPerm */
        start local 14 // java.security.Permission newPerm
        42: .line 365
            aload 10 /* perms */
            aload 14 /* newPerm */
            invokevirtual java.security.Permissions.add:(Ljava/security/Permission;)V
        end local 14 // java.security.Permission newPerm
        43: .line 362
      StackMap locals:
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 40
        44: .line 360
            aload 13
            monitorexit
        45: goto 48
        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
        46: aload 13
            monitorexit
        47: athrow
        48: .line 371
      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
        49: .line 372
            aload 0 /* this */
            getfield javax.security.auth.SubjectDomainCombiner.subject:Ljavax/security/auth/Subject;
            astore 14 /* finalS */
        start local 14 // javax.security.auth.Subject finalS
        50: .line 375
            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
        51: .line 374
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.security.PermissionCollection
        52: .line 373
            astore 15 /* newPerms */
        start local 15 // java.security.PermissionCollection newPerms
        53: .line 386
            aload 15 /* newPerms */
            dup
            astore 16
            monitorenter
        54: .line 387
            aload 15 /* newPerms */
            invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
            astore 12 /* e */
        start local 12 // java.util.Enumeration e
        55: .line 388
            goto 63
        56: .line 389
      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
        57: .line 390
            aload 10 /* perms */
            aload 17 /* newPerm */
            invokevirtual java.security.Permissions.implies:(Ljava/security/Permission;)Z
            ifne 63
        58: .line 391
            aload 10 /* perms */
            aload 17 /* newPerm */
            invokevirtual java.security.Permissions.add:(Ljava/security/Permission;)V
        59: .line 392
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 63
        60: .line 393
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
        61: .line 394
            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;
        62: .line 393
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 17 // java.security.Permission newPerm
        63: .line 388
      StackMap locals:
      StackMap stack:
            aload 12 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 56
        64: .line 386
            aload 16
            monitorexit
        65: goto 68
        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
        66: aload 16
            monitorexit
        67: athrow
        start local 12 // java.util.Enumeration e
        68: .line 398
      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
        69: .line 399
            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;
        70: .line 398
            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
        71: .line 401
      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 73
        72: .line 402
            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
        73: .line 404
      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
        74: .line 340
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        75: iload 7 /* i */
            iload 3 /* cLen */
            if_icmplt 28
        end local 7 // int i
        76: .line 322
            aload 6
            monitorexit
        77: goto 80
      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
        78: aload 6
            monitorexit
        79: athrow
        80: .line 408
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 87
        81: .line 409
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ldc "updated current: "
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        82: .line 410
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        83: goto 86
        84: .line 411
      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
        85: .line 410
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        86: iload 6 /* i */
            iload 3 /* cLen */
            if_icmplt 84
        end local 6 // int i
        87: .line 416
      StackMap locals:
      StackMap stack:
            iload 4 /* aLen */
            ifle 89
        88: .line 417
            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
        89: .line 420
      StackMap locals:
      StackMap stack:
            getstatic javax.security.auth.SubjectDomainCombiner.debug:Lsun/security/util/Debug;
            ifnull 101
        90: .line 421
            aload 5 /* newDomains */
            ifnull 91
            aload 5 /* newDomains */
            arraylength
            ifne 93
        91: .line 422
      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
        92: .line 423
            goto 101
        93: .line 424
      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
        94: .line 425
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        95: goto 100
        96: .line 426
      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;
        97: .line 427
            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;
        98: .line 426
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        99: .line 425
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
       100: iload 6 /* i */
            aload 5 /* newDomains */
            arraylength
            if_icmplt 96
        end local 6 // int i
       101: .line 433
      StackMap locals:
      StackMap stack:
            aload 5 /* newDomains */
            ifnull 102
            aload 5 /* newDomains */
            arraylength
            ifne 103
       102: .line 434
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
       103: .line 436
      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  104     0             this  Ljavax/security/auth/SubjectDomainCombiner;
            0  104     1   currentDomains  [Ljava/security/ProtectionDomain;
            0  104     2  assignedDomains  [Ljava/security/ProtectionDomain;
            6  104     3             cLen  I
            9  104     4             aLen  I
           10  104     5       newDomains  [Ljava/security/ProtectionDomain;
           14   26     7           newSet  Ljava/util/Set<Ljava/security/Principal;>;
           27   76     7                i  I
           29   74     8               pd  Ljava/security/ProtectionDomain;
           30   74     9        subjectPd  Ljava/security/ProtectionDomain;
           35   71    10            perms  Ljava/security/Permissions;
           36   71    11             coll  Ljava/security/PermissionCollection;
           39   46    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           55   66    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           68   71    12                e  Ljava/util/Enumeration<Ljava/security/Permission;>;
           42   43    14          newPerm  Ljava/security/Permission;
           49   71    13          finalCs  Ljava/security/CodeSource;
           50   71    14           finalS  Ljavax/security/auth/Subject;
           53   71    15         newPerms  Ljava/security/PermissionCollection;
           57   63    17          newPerm  Ljava/security/Permission;
           83   87     6                i  I
           95  101     6                i  I
      Exception table:
        from    to  target  type
          15    17      18  any
          18    19      18  any
          38    45      46  any
          46    47      46  any
          54    65      66  any
          66    67      66  any
          11    77      78  any
          78    79      78  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 441
            aload 0 /* domains */
            ifnull 1
            aload 0 /* domains */
            arraylength
            ifne 2
         1: .line 442
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 444
      StackMap locals:
      StackMap stack:
            aload 0 /* domains */
            arraylength
            anewarray java.security.ProtectionDomain
            astore 1 /* optimized */
        start local 1 // java.security.ProtectionDomain[] optimized
         3: .line 446
            iconst_0
            istore 3 /* num */
        start local 3 // int num
         4: .line 447
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 19
         6: .line 456
      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 459
            iconst_0
            istore 5 /* found */
        start local 5 // boolean found
         9: .line 460
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        10: goto 15
        11: .line 461
      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 460
            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 463
      StackMap locals:
      StackMap stack:
            iload 5 /* found */
            ifne 18
        17: .line 464
            aload 1 /* optimized */
            iload 3 /* num */
            iinc 3 /* num */ 1
            aload 2 /* pd */
            aastore
        end local 5 // boolean found
        18: .line 447
      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 470
            iload 3 /* num */
            ifle 24
            iload 3 /* num */
            aload 0 /* domains */
            arraylength
            if_icmpge 24
        21: .line 471
            iload 3 /* num */
            anewarray java.security.ProtectionDomain
            astore 4 /* downSize */
        start local 4 // java.security.ProtectionDomain[] downSize
        22: .line 472
            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 473
            aload 4 /* downSize */
            astore 1 /* optimized */
        end local 4 // java.security.ProtectionDomain[] downSize
        24: .line 476
      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 481
            new javax.security.auth.SubjectDomainCombiner$4
            dup
            invokespecial javax.security.auth.SubjectDomainCombiner$4.<init>:()V
         1: .line 480
            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 486
            aload 0 /* s */
            ifnull 4
         3: .line 487
            aload 0 /* s */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            ireturn
         4: .line 491
      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 496
            aload 0 /* currentDomains */
            ifnull 1
            aload 0 /* currentDomains */
            arraylength
            ifne 3
         1: .line 497
      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 498
            goto 15
         3: .line 499
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 12
         5: .line 501
      StackMap locals: int
      StackMap stack:
            aload 0 /* currentDomains */
            iload 2 /* i */
            aaload
            ifnonnull 8
         6: .line 502
            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 503
            goto 11
         8: .line 504
      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 505
            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 504
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        11: .line 500
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        12: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* currentDomains */
            ifnull 15
        13: .line 500
            iload 2 /* i */
            aload 0 /* currentDomains */
            arraylength
        14: .line 499
            if_icmplt 5
        end local 2 // int i
        15: .line 510
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 16
            aload 1 /* assignedDomains */
            arraylength
            ifne 18
        16: .line 511
      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 512
            goto 31
        18: .line 513
      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 514
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        20: goto 28
        21: .line 516
      StackMap locals: int
      StackMap stack:
            aload 1 /* assignedDomains */
            iload 2 /* i */
            aaload
            ifnonnull 24
        22: .line 517
            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 518
            goto 27
        24: .line 519
      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 520
            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 519
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        27: .line 515
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
        28: .line 514
      StackMap locals:
      StackMap stack:
            aload 1 /* assignedDomains */
            ifnull 31
        29: .line 515
            iload 2 /* i */
            aload 1 /* assignedDomains */
            arraylength
        30: .line 514
            if_icmplt 21
        end local 2 // int i
        31: .line 524
      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 527
            aload 0 /* pd */
            ifnonnull 2
         1: .line 528
            ldc "null"
            areturn
         2: .line 530
      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