public class sun.security.jgss.krb5.Krb5Util$ServiceCreds
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.jgss.krb5.Krb5Util$ServiceCreds
  super_class: java.lang.Object
{
  private javax.security.auth.kerberos.KerberosPrincipal kp;
    descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<javax.security.auth.kerberos.KeyTab> ktabs;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Ljavax/security/auth/kerberos/KeyTab;>;

  private java.util.List<javax.security.auth.kerberos.KerberosKey> kk;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Ljavax/security/auth/kerberos/KerberosKey;>;

  private javax.security.auth.Subject subj;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
         0: .line 202
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;

  private static sun.security.jgss.krb5.Krb5Util$ServiceCreds getInstance(javax.security.auth.Subject, java.lang.String);
    descriptor: (Ljavax/security/auth/Subject;Ljava/lang/String;)Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // javax.security.auth.Subject subj
        start local 1 // java.lang.String serverPrincipal
         0: .line 212
            new sun.security.jgss.krb5.Krb5Util$ServiceCreds
            dup
            invokespecial sun.security.jgss.krb5.Krb5Util$ServiceCreds.<init>:()V
            astore 2 /* sc */
        start local 2 // sun.security.jgss.krb5.Krb5Util$ServiceCreds sc
         1: .line 213
            aload 2 /* sc */
            aload 0 /* subj */
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.subj:Ljavax/security/auth/Subject;
         2: .line 215
            aload 0 /* subj */
            ldc Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokevirtual javax.security.auth.Subject.getPrincipals:(Ljava/lang/Class;)Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: javax.security.auth.Subject java.lang.String sun.security.jgss.krb5.Krb5Util$ServiceCreds top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.security.auth.kerberos.KerberosPrincipal
            astore 3 /* p */
        start local 3 // javax.security.auth.kerberos.KerberosPrincipal p
         4: .line 216
            aload 1 /* serverPrincipal */
            ifnull 6
         5: .line 217
            aload 3 /* p */
            invokevirtual javax.security.auth.kerberos.KerberosPrincipal.getName:()Ljava/lang/String;
            aload 1 /* serverPrincipal */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         6: .line 218
      StackMap locals: javax.security.auth.Subject java.lang.String sun.security.jgss.krb5.Krb5Util$ServiceCreds javax.security.auth.kerberos.KerberosPrincipal java.util.Iterator
      StackMap stack:
            aload 2 /* sc */
            aload 3 /* p */
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
         7: .line 219
            aload 3 /* p */
            invokevirtual javax.security.auth.kerberos.KerberosPrincipal.getName:()Ljava/lang/String;
            astore 1 /* serverPrincipal */
         8: .line 220
            goto 10
        end local 3 // javax.security.auth.kerberos.KerberosPrincipal p
         9: .line 215
      StackMap locals: javax.security.auth.Subject java.lang.String sun.security.jgss.krb5.Krb5Util$ServiceCreds top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        10: .line 223
      StackMap locals: javax.security.auth.Subject java.lang.String sun.security.jgss.krb5.Krb5Util$ServiceCreds
      StackMap stack:
            aload 2 /* sc */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
            ifnonnull 22
        11: .line 227
            aload 0 /* subj */
            aload 1 /* serverPrincipal */
            aconst_null
            ldc Ljavax/security/auth/kerberos/KerberosKey;
        12: .line 226
            invokestatic sun.security.jgss.krb5.SubjectComber.findMany:(Ljavax/security/auth/Subject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List;
            astore 3 /* keys */
        start local 3 // java.util.List keys
        13: .line 228
            aload 3 /* keys */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 21
        14: .line 229
            aload 2 /* sc */
            aload 3 /* keys */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.security.auth.kerberos.KerberosKey
            invokevirtual javax.security.auth.kerberos.KerberosKey.getPrincipal:()Ljavax/security/auth/kerberos/KerberosPrincipal;
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
        15: .line 230
            aload 2 /* sc */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokevirtual javax.security.auth.kerberos.KerberosPrincipal.getName:()Ljava/lang/String;
            astore 1 /* serverPrincipal */
        16: .line 231
            getstatic sun.security.jgss.krb5.Krb5Util.DEBUG:Z
            ifeq 22
        17: .line 232
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc ">>> ServiceCreds: no kp? find one from kk: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 233
            aload 1 /* serverPrincipal */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 232
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 235
            goto 22
        21: .line 236
      StackMap locals: java.util.List
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.util.List keys
        22: .line 239
      StackMap locals:
      StackMap stack:
            aload 2 /* sc */
        23: .line 240
            aload 0 /* subj */
            aconst_null
            aconst_null
            ldc Ljavax/security/auth/kerberos/KeyTab;
        24: .line 239
            invokestatic sun.security.jgss.krb5.SubjectComber.findMany:(Ljavax/security/auth/Subject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List;
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.ktabs:Ljava/util/List;
        25: .line 241
            aload 2 /* sc */
        26: .line 242
            aload 0 /* subj */
            aload 1 /* serverPrincipal */
            aconst_null
            ldc Ljavax/security/auth/kerberos/KerberosKey;
        27: .line 241
            invokestatic sun.security.jgss.krb5.SubjectComber.findMany:(Ljavax/security/auth/Subject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List;
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kk:Ljava/util/List;
        28: .line 243
            aload 2 /* sc */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.ktabs:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 30
            aload 2 /* sc */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kk:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 30
        29: .line 244
            aconst_null
            areturn
        30: .line 246
      StackMap locals:
      StackMap stack:
            aload 2 /* sc */
            areturn
        end local 2 // sun.security.jgss.krb5.Krb5Util$ServiceCreds sc
        end local 1 // java.lang.String serverPrincipal
        end local 0 // javax.security.auth.Subject subj
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   31     0             subj  Ljavax/security/auth/Subject;
            0   31     1  serverPrincipal  Ljava/lang/String;
            1   31     2               sc  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;
            4    9     3                p  Ljavax/security/auth/kerberos/KerberosPrincipal;
           13   22     3             keys  Ljava/util/List<Ljavax/security/auth/kerberos/KerberosKey;>;
    MethodParameters:
                 Name  Flags
      subj             
      serverPrincipal  

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
         0: .line 250
            aload 0 /* this */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokevirtual javax.security.auth.kerberos.KerberosPrincipal.getName:()Ljava/lang/String;
            areturn
        end local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;

  public javax.security.auth.kerberos.KerberosKey[] getKKeys();
    descriptor: ()[Ljavax/security/auth/kerberos/KerberosKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=1
        start local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
         0: .line 254
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* keys */
        start local 1 // java.util.List keys
         1: .line 255
            aload 0 /* this */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kk:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: sun.security.jgss.krb5.Krb5Util$ServiceCreds java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.security.auth.kerberos.KerberosKey
            astore 2 /* k */
        start local 2 // javax.security.auth.kerberos.KerberosKey k
         3: .line 256
            aload 1 /* keys */
            aload 2 /* k */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // javax.security.auth.kerberos.KerberosKey k
         4: .line 255
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 258
            aload 0 /* this */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.ktabs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 12
      StackMap locals:
      StackMap stack:
         6: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.security.auth.kerberos.KeyTab
            astore 2 /* ktab */
        start local 2 // javax.security.auth.kerberos.KeyTab ktab
         7: .line 259
            aload 2 /* ktab */
            aload 0 /* this */
            getfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokevirtual javax.security.auth.kerberos.KeyTab.getKeys:(Ljavax/security/auth/kerberos/KerberosPrincipal;)[Ljavax/security/auth/kerberos/KerberosKey;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 11
      StackMap locals: sun.security.jgss.krb5.Krb5Util$ServiceCreds java.util.List javax.security.auth.kerberos.KeyTab java.util.Iterator top int int javax.security.auth.kerberos.KerberosKey[]
      StackMap stack:
         8: aload 7
            iload 5
            aaload
            astore 4 /* k */
        start local 4 // javax.security.auth.kerberos.KerberosKey k
         9: .line 260
            aload 1 /* keys */
            aload 4 /* k */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // javax.security.auth.kerberos.KerberosKey k
        10: .line 259
            iinc 5 1
      StackMap locals:
      StackMap stack:
        11: iload 5
            iload 6
            if_icmplt 8
        end local 2 // javax.security.auth.kerberos.KeyTab ktab
        12: .line 258
      StackMap locals: sun.security.jgss.krb5.Krb5Util$ServiceCreds java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        13: .line 263
            aload 1 /* keys */
            aload 1 /* keys */
            invokeinterface java.util.List.size:()I
            anewarray javax.security.auth.kerberos.KerberosKey
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.security.auth.kerberos.KerberosKey[]
            areturn
        end local 1 // java.util.List keys
        end local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;
            1   14     1  keys  Ljava/util/List<Ljavax/security/auth/kerberos/KerberosKey;>;
            3    4     2     k  Ljavax/security/auth/kerberos/KerberosKey;
            7   12     2  ktab  Ljavax/security/auth/kerberos/KeyTab;
            9   10     4     k  Ljavax/security/auth/kerberos/KerberosKey;

  public sun.security.krb5.EncryptionKey[] getEKeys();
    descriptor: ()[Lsun/security/krb5/EncryptionKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=4, args_size=1
        start local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
         0: .line 267
            aload 0 /* this */
            invokevirtual sun.security.jgss.krb5.Krb5Util$ServiceCreds.getKKeys:()[Ljavax/security/auth/kerberos/KerberosKey;
            astore 1 /* kkeys */
        start local 1 // javax.security.auth.kerberos.KerberosKey[] kkeys
         1: .line 268
            aload 1 /* kkeys */
            arraylength
            anewarray sun.security.krb5.EncryptionKey
            astore 2 /* ekeys */
        start local 2 // sun.security.krb5.EncryptionKey[] ekeys
         2: .line 269
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 9
         4: .line 270
      StackMap locals: javax.security.auth.kerberos.KerberosKey[] sun.security.krb5.EncryptionKey[] int
      StackMap stack:
            aload 2 /* ekeys */
            iload 3 /* i */
            new sun.security.krb5.EncryptionKey
            dup
         5: .line 271
            aload 1 /* kkeys */
            iload 3 /* i */
            aaload
            invokevirtual javax.security.auth.kerberos.KerberosKey.getEncoded:()[B
            aload 1 /* kkeys */
            iload 3 /* i */
            aaload
            invokevirtual javax.security.auth.kerberos.KerberosKey.getKeyType:()I
         6: .line 272
            new java.lang.Integer
            dup
            aload 1 /* kkeys */
            iload 3 /* i */
            aaload
            invokevirtual javax.security.auth.kerberos.KerberosKey.getVersionNumber:()I
            invokespecial java.lang.Integer.<init>:(I)V
            invokespecial sun.security.krb5.EncryptionKey.<init>:([BILjava/lang/Integer;)V
         7: .line 270
            aastore
         8: .line 269
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            aload 2 /* ekeys */
            arraylength
            if_icmplt 4
        end local 3 // int i
        10: .line 274
            aload 2 /* ekeys */
            areturn
        end local 2 // sun.security.krb5.EncryptionKey[] ekeys
        end local 1 // javax.security.auth.kerberos.KerberosKey[] kkeys
        end local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;
            1   11     1  kkeys  [Ljavax/security/auth/kerberos/KerberosKey;
            2   11     2  ekeys  [Lsun/security/krb5/EncryptionKey;
            3   10     3      i  I

  public void destroy();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
         0: .line 278
            aload 0 /* this */
            aconst_null
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kp:Ljavax/security/auth/kerberos/KerberosPrincipal;
         1: .line 279
            aload 0 /* this */
            aconst_null
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.ktabs:Ljava/util/List;
         2: .line 280
            aload 0 /* this */
            aconst_null
            putfield sun.security.jgss.krb5.Krb5Util$ServiceCreds.kk:Ljava/util/List;
         3: .line 281
            return
        end local 0 // sun.security.jgss.krb5.Krb5Util$ServiceCreds this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/security/jgss/krb5/Krb5Util$ServiceCreds;
}
SourceFile: "Krb5Util.java"
NestHost: sun.security.jgss.krb5.Krb5Util
InnerClasses:
  public ServiceCreds = sun.security.jgss.krb5.Krb5Util$ServiceCreds of sun.security.jgss.krb5.Krb5Util