public class sun.security.tools.KeyStoreUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.tools.KeyStoreUtil
  super_class: java.lang.Object
{
  private static final java.text.Collator collator;
    descriptor: Ljava/text/Collator;
    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 66
            invokestatic java.text.Collator.getInstance:()Ljava/text/Collator;
            putstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
         1: .line 69
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            iconst_0
            invokevirtual java.text.Collator.setStrength:(I)V
         2: .line 70
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.tools.KeyStoreUtil this
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 64
            return
        end local 0 // sun.security.tools.KeyStoreUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/tools/KeyStoreUtil;

  public static boolean isSelfSigned(java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.cert.X509Certificate cert
         0: .line 76
            aload 0 /* cert */
            aload 0 /* cert */
            invokestatic sun.security.tools.KeyStoreUtil.signedBy:(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
            ireturn
        end local 0 // java.security.cert.X509Certificate cert
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  cert  Ljava/security/cert/X509Certificate;
    MethodParameters:
      Name  Flags
      cert  

  public static boolean signedBy(java.security.cert.X509Certificate, java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.security.cert.X509Certificate end
        start local 1 // java.security.cert.X509Certificate ca
         0: .line 80
            aload 1 /* ca */
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            aload 0 /* end */
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 81
            iconst_0
            ireturn
         2: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* end */
            aload 1 /* ca */
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokevirtual java.security.cert.X509Certificate.verify:(Ljava/security/PublicKey;)V
         3: .line 85
            iconst_1
            ireturn
         4: .line 86
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         5: .line 87
            iconst_0
            ireturn
        end local 1 // java.security.cert.X509Certificate ca
        end local 0 // java.security.cert.X509Certificate end
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   end  Ljava/security/cert/X509Certificate;
            0    6     1    ca  Ljava/security/cert/X509Certificate;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      end   
      ca    

  public static boolean isWindowsKeyStore(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String storetype
         0: .line 96
            aload 0 /* storetype */
            ifnull 4
         1: .line 97
            aload 0 /* storetype */
            ldc "Windows-MY"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 3
         2: .line 98
            aload 0 /* storetype */
            ldc "Windows-ROOT"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 96
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 0 // java.lang.String storetype
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  storetype  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      storetype  

  public static java.lang.String niceStoreTypeName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String storetype
         0: .line 105
            aload 0 /* storetype */
            ldc "Windows-MY"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 106
            ldc "Windows-MY"
            areturn
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* storetype */
            ldc "Windows-ROOT"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 108
            ldc "Windows-ROOT"
            areturn
         4: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* storetype */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String storetype
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  storetype  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      storetype  

  public static java.lang.String getCacerts();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 118
            getstatic java.io.File.separator:Ljava/lang/String;
            astore 0 /* sep */
        start local 0 // java.lang.String sep
         1: .line 119
            new java.lang.StringBuilder
            dup
            ldc "java.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 120
            ldc "lib"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "security"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 121
            ldc "cacerts"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 119
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.String sep
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    5     0   sep  Ljava/lang/String;

  public static java.security.KeyStore getCacertsKeyStore();
    descriptor: ()Ljava/security/KeyStore;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 128
            new java.io.File
            dup
            invokestatic sun.security.tools.KeyStoreUtil.getCacerts:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 0 /* file */
        start local 0 // java.io.File file
         1: .line 129
            aload 0 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 3
         2: .line 130
            aconst_null
            areturn
         3: .line 132
      StackMap locals: java.io.File
      StackMap stack:
            aload 0 /* file */
            aconst_null
            invokestatic java.security.KeyStore.getInstance:(Ljava/io/File;[C)Ljava/security/KeyStore;
            areturn
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0  file  Ljava/io/File;
    Exceptions:
      throws java.lang.Exception

  public static char[] getPassWithModifier(java.lang.String, java.lang.String, java.util.ResourceBundle);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/ResourceBundle;)[C
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // java.lang.String modifier
        start local 1 // java.lang.String arg
        start local 2 // java.util.ResourceBundle rb
         0: .line 137
            aload 0 /* modifier */
            ifnonnull 2
         1: .line 138
            aload 1 /* arg */
            invokevirtual java.lang.String.toCharArray:()[C
            areturn
         2: .line 139
      StackMap locals:
      StackMap stack:
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            aload 0 /* modifier */
            ldc "env"
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 12
         3: .line 140
            aload 1 /* arg */
            invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* value */
        start local 3 // java.lang.String value
         4: .line 141
            aload 3 /* value */
            ifnonnull 11
         5: .line 142
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
         6: .line 143
            ldc "Cannot.find.environment.variable."
         7: .line 142
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 143
            aload 1 /* arg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 142
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 144
            aconst_null
            areturn
        11: .line 146
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* value */
            invokevirtual java.lang.String.toCharArray:()[C
            areturn
        end local 3 // java.lang.String value
        12: .line 148
      StackMap locals:
      StackMap stack:
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            aload 0 /* modifier */
            ldc "file"
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 49
        13: .line 150
            aconst_null
            astore 3 /* url */
        start local 3 // java.net.URL url
        14: .line 152
            new java.net.URL
            dup
            aload 1 /* arg */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 3 /* url */
        15: .line 153
            goto 27
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL
      StackMap stack: java.net.MalformedURLException
        16: pop
        17: .line 154
            new java.io.File
            dup
            aload 1 /* arg */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* f */
        start local 4 // java.io.File f
        18: .line 155
            aload 4 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 21
        19: .line 156
            aload 4 /* f */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            astore 3 /* url */
        20: .line 157
            goto 27
        21: .line 158
      StackMap locals: java.io.File
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
        22: .line 159
            ldc "Cannot.find.file."
        23: .line 158
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        24: .line 159
            aload 1 /* arg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 158
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 160
            aconst_null
            areturn
        end local 4 // java.io.File f
        27: .line 164
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4
            aconst_null
            astore 5
        28: .line 165
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
        29: .line 166
            aload 3 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
        30: .line 165
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
        31: .line 164
            astore 6 /* br */
        start local 6 // java.io.BufferedReader br
        32: .line 167
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 7 /* value */
        start local 7 // java.lang.String value
        33: .line 169
            aload 7 /* value */
            ifnonnull 37
        34: .line 170
            iconst_0
            newarray 5
        35: .line 174
            aload 6 /* br */
            ifnull 36
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        36: .line 170
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL java.lang.Throwable java.lang.Throwable java.io.BufferedReader java.lang.String
      StackMap stack: char[]
            areturn
        37: .line 173
      StackMap locals:
      StackMap stack:
            aload 7 /* value */
            invokevirtual java.lang.String.toCharArray:()[C
        38: .line 174
            aload 6 /* br */
            ifnull 39
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        39: .line 173
      StackMap locals:
      StackMap stack: char[]
            areturn
        end local 7 // java.lang.String value
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL java.lang.Throwable java.lang.Throwable java.io.BufferedReader
      StackMap stack: java.lang.Throwable
        40: astore 4
        41: .line 174
            aload 6 /* br */
            ifnull 42
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        end local 6 // java.io.BufferedReader br
      StackMap locals:
      StackMap stack:
        42: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        43: astore 5
            aload 4
            ifnonnull 44
            aload 5
            astore 4
            goto 45
      StackMap locals:
      StackMap stack:
        44: aload 4
            aload 5
            if_acmpeq 45
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        45: aload 4
            athrow
        end local 3 // java.net.URL url
        46: .line 175
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle
      StackMap stack: java.io.IOException
            astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
        47: .line 176
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 3 /* ioe */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
        48: .line 177
            aconst_null
            areturn
        end local 3 // java.io.IOException ioe
        49: .line 180
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
            ldc "Unknown.password.type."
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        50: .line 181
            aload 0 /* modifier */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        51: .line 180
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        52: .line 182
            aconst_null
            areturn
        end local 2 // java.util.ResourceBundle rb
        end local 1 // java.lang.String arg
        end local 0 // java.lang.String modifier
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   53     0  modifier  Ljava/lang/String;
            0   53     1       arg  Ljava/lang/String;
            0   53     2        rb  Ljava/util/ResourceBundle;
            4   12     3     value  Ljava/lang/String;
           14   46     3       url  Ljava/net/URL;
           18   27     4         f  Ljava/io/File;
           32   42     6        br  Ljava/io/BufferedReader;
           33   40     7     value  Ljava/lang/String;
           47   49     3       ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    15      16  Class java.net.MalformedURLException
          32    35      40  any
          37    38      40  any
          28    36      43  any
          37    39      43  any
          40    43      43  any
          13    26      46  Class java.io.IOException
          27    36      46  Class java.io.IOException
          37    39      46  Class java.io.IOException
          40    46      46  Class java.io.IOException
    MethodParameters:
          Name  Flags
      modifier  
      arg       
      rb        

  private static void parseArgsLine(java.util.List<java.lang.String>, java.lang.String);
    descriptor: (Ljava/util/List;Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.util.List list
        start local 1 // java.lang.String s
         0: .line 195
            new java.io.StreamTokenizer
            dup
            new java.io.StringReader
            dup
            aload 1 /* s */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            invokespecial java.io.StreamTokenizer.<init>:(Ljava/io/Reader;)V
            astore 2 /* st */
        start local 2 // java.io.StreamTokenizer st
         1: .line 197
            aload 2 /* st */
            invokevirtual java.io.StreamTokenizer.resetSyntax:()V
         2: .line 198
            aload 2 /* st */
            iconst_0
            bipush 32
            invokevirtual java.io.StreamTokenizer.whitespaceChars:(II)V
         3: .line 199
            aload 2 /* st */
            bipush 33
            sipush 255
            invokevirtual java.io.StreamTokenizer.wordChars:(II)V
         4: .line 201
            aload 2 /* st */
            bipush 34
            invokevirtual java.io.StreamTokenizer.quoteChar:(I)V
         5: .line 202
            aload 2 /* st */
            bipush 39
            invokevirtual java.io.StreamTokenizer.quoteChar:(I)V
         6: .line 205
      StackMap locals: java.io.StreamTokenizer
      StackMap stack:
            aload 2 /* st */
            invokevirtual java.io.StreamTokenizer.nextToken:()I
            iconst_m1
            if_icmpne 8
         7: .line 206
            goto 10
         8: .line 208
      StackMap locals:
      StackMap stack:
            aload 0 /* list */
            aload 2 /* st */
            getfield java.io.StreamTokenizer.sval:Ljava/lang/String;
            invokestatic sun.security.util.PropertyExpander.expand:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 204
            goto 6
        10: .line 210
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.StreamTokenizer st
        end local 1 // java.lang.String s
        end local 0 // java.util.List list
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  list  Ljava/util/List<Ljava/lang/String;>;
            0   11     1     s  Ljava/lang/String;
            1   11     2    st  Ljava/io/StreamTokenizer;
    Exceptions:
      throws java.io.IOException, sun.security.util.PropertyExpander$ExpandException
    Signature: (Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;)V
    MethodParameters:
      Name  Flags
      list  
      s     

  public static java.lang.String[] expandArgs(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // java.lang.String tool
        start local 1 // java.lang.String file
        start local 2 // java.lang.String c1
        start local 3 // java.lang.String c2
        start local 4 // java.lang.String[] args
         0: .line 232
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* result */
        start local 5 // java.util.List result
         1: .line 233
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 6 /* p */
        start local 6 // java.util.Properties p
         2: .line 234
            aload 6 /* p */
            new java.io.FileInputStream
            dup
            aload 1 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         3: .line 236
            aload 6 /* p */
            new java.lang.StringBuilder
            dup
            aload 0 /* tool */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".all"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* s */
        start local 7 // java.lang.String s
         4: .line 237
            aload 7 /* s */
            ifnull 6
         5: .line 238
            aload 5 /* result */
            aload 7 /* s */
            invokestatic sun.security.tools.KeyStoreUtil.parseArgsLine:(Ljava/util/List;Ljava/lang/String;)V
         6: .line 242
      StackMap locals: java.util.List java.util.Properties java.lang.String
      StackMap stack:
            aload 6 /* p */
            new java.lang.StringBuilder
            dup
            aload 0 /* tool */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* c1 */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* s1 */
        start local 8 // java.lang.String s1
         7: .line 243
            aconst_null
            astore 9 /* s2 */
        start local 9 // java.lang.String s2
         8: .line 244
            aload 3 /* c2 */
            ifnull 10
         9: .line 245
            aload 6 /* p */
            new java.lang.StringBuilder
            dup
            aload 0 /* tool */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* c2 */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* s2 */
        10: .line 247
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 8 /* s1 */
            ifnull 14
            aload 9 /* s2 */
            ifnull 14
        11: .line 248
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot have both "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* c1 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " and "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 249
            aload 3 /* c2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " as pre-configured options"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 248
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 251
      StackMap locals:
      StackMap stack:
            aload 8 /* s1 */
            ifnonnull 16
        15: .line 252
            aload 9 /* s2 */
            astore 8 /* s1 */
        16: .line 254
      StackMap locals:
      StackMap stack:
            aload 8 /* s1 */
            ifnull 18
        17: .line 255
            aload 5 /* result */
            aload 8 /* s1 */
            invokestatic sun.security.tools.KeyStoreUtil.parseArgsLine:(Ljava/util/List;Ljava/lang/String;)V
        18: .line 258
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 20
        19: .line 259
            aload 4 /* args */
            areturn
        20: .line 261
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            aload 4 /* args */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        21: .line 262
            aload 5 /* result */
            aload 5 /* result */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 9 // java.lang.String s2
        end local 8 // java.lang.String s1
        end local 7 // java.lang.String s
        end local 6 // java.util.Properties p
        end local 5 // java.util.List result
        end local 4 // java.lang.String[] args
        end local 3 // java.lang.String c2
        end local 2 // java.lang.String c1
        end local 1 // java.lang.String file
        end local 0 // java.lang.String tool
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    tool  Ljava/lang/String;
            0   22     1    file  Ljava/lang/String;
            0   22     2      c1  Ljava/lang/String;
            0   22     3      c2  Ljava/lang/String;
            0   22     4    args  [Ljava/lang/String;
            1   22     5  result  Ljava/util/List<Ljava/lang/String;>;
            2   22     6       p  Ljava/util/Properties;
            4   22     7       s  Ljava/lang/String;
            7   22     8      s1  Ljava/lang/String;
            8   22     9      s2  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException, sun.security.util.PropertyExpander$ExpandException
    MethodParameters:
      Name  Flags
      tool  
      file  
      c1    
      c2    
      args  

  public static void loadProviderByName(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.String provName
        start local 1 // java.lang.String arg
         0: .line 274
            aload 0 /* provName */
            invokestatic java.security.Security.getProvider:(Ljava/lang/String;)Ljava/security/Provider;
            astore 2 /* loaded */
        start local 2 // java.security.Provider loaded
         1: .line 275
            aload 2 /* loaded */
            ifnull 6
         2: .line 276
            aload 1 /* arg */
            ifnull 5
         3: .line 277
            aload 2 /* loaded */
            aload 1 /* arg */
            invokevirtual java.security.Provider.configure:(Ljava/lang/String;)Ljava/security/Provider;
            astore 2 /* loaded */
         4: .line 278
            aload 2 /* loaded */
            invokestatic java.security.Security.addProvider:(Ljava/security/Provider;)I
            pop
         5: .line 280
      StackMap locals: java.security.Provider
      StackMap stack:
            return
         6: .line 282
      StackMap locals:
      StackMap stack:
            ldc Ljava/security/Provider;
         7: .line 283
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
         8: .line 282
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
            invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: java.lang.String java.lang.String java.security.Provider top java.util.Iterator
      StackMap stack:
         9: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.Provider
            astore 3 /* p */
        start local 3 // java.security.Provider p
        10: .line 284
            aload 3 /* p */
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            aload 0 /* provName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        11: .line 285
            aload 1 /* arg */
            ifnull 13
        12: .line 286
            aload 3 /* p */
            aload 1 /* arg */
            invokevirtual java.security.Provider.configure:(Ljava/lang/String;)Ljava/security/Provider;
            astore 3 /* p */
        13: .line 288
      StackMap locals: java.lang.String java.lang.String java.security.Provider java.security.Provider java.util.Iterator
      StackMap stack:
            aload 3 /* p */
            invokestatic java.security.Security.addProvider:(Ljava/security/Provider;)I
            pop
        14: .line 289
            return
        end local 3 // java.security.Provider p
        15: .line 282
      StackMap locals: java.lang.String java.lang.String java.security.Provider top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        16: .line 292
            new java.lang.IllegalArgumentException
            dup
            ldc "No provider found"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.Provider loaded
        end local 1 // java.lang.String arg
        end local 0 // java.lang.String provName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0  provName  Ljava/lang/String;
            0   17     1       arg  Ljava/lang/String;
            1   17     2    loaded  Ljava/security/Provider;
           10   15     3         p  Ljava/security/Provider;
    MethodParameters:
          Name  Flags
      provName  
      arg       

  public static void loadProviderByClass(java.lang.String, java.lang.String, java.lang.ClassLoader);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // java.lang.String provClass
        start local 1 // java.lang.String arg
        start local 2 // java.lang.ClassLoader cl
         0: .line 309
            aload 0 /* provClass */
            ldc "sun.security.pkcs11.SunPKCS11"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 310
            ldc "SunPKCS11"
            aload 1 /* arg */
            invokestatic sun.security.tools.KeyStoreUtil.loadProviderByName:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 311
            return
         3: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* provClass */
            ldc "com.oracle.security.crypto.UcryptoProvider"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 313
            ldc "OracleUcrypto"
            aload 1 /* arg */
            invokestatic sun.security.tools.KeyStoreUtil.loadProviderByName:(Ljava/lang/String;Ljava/lang/String;)V
         5: .line 314
            return
         6: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* provClass */
            ldc "sun.security.mscapi.SunMSCAPI"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 316
            ldc "SunMSCAPI"
            aload 1 /* arg */
            invokestatic sun.security.tools.KeyStoreUtil.loadProviderByName:(Ljava/lang/String;Ljava/lang/String;)V
         8: .line 317
            return
         9: .line 322
      StackMap locals:
      StackMap stack:
            aload 0 /* provClass */
            iconst_0
            aload 2 /* cl */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 4 /* clazz */
        start local 4 // java.lang.Class clazz
        10: .line 323
            aload 4 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.Provider
            astore 3 /* prov */
        end local 4 // java.lang.Class clazz
        start local 3 // java.security.Provider prov
        11: .line 324
            goto 14
        end local 3 // java.security.Provider prov
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
        12: astore 4 /* e */
        start local 4 // java.lang.ReflectiveOperationException e
        13: .line 325
            new java.lang.IllegalArgumentException
            dup
            aload 4 /* e */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.ReflectiveOperationException e
        start local 3 // java.security.Provider prov
        14: .line 327
      StackMap locals: java.security.Provider
      StackMap stack:
            aload 1 /* arg */
            ifnull 16
        15: .line 328
            aload 3 /* prov */
            aload 1 /* arg */
            invokevirtual java.security.Provider.configure:(Ljava/lang/String;)Ljava/security/Provider;
            astore 3 /* prov */
        16: .line 330
      StackMap locals:
      StackMap stack:
            aload 3 /* prov */
            invokestatic java.security.Security.addProvider:(Ljava/security/Provider;)I
            pop
        17: .line 331
            return
        end local 3 // java.security.Provider prov
        end local 2 // java.lang.ClassLoader cl
        end local 1 // java.lang.String arg
        end local 0 // java.lang.String provClass
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0  provClass  Ljava/lang/String;
            0   18     1        arg  Ljava/lang/String;
            0   18     2         cl  Ljava/lang/ClassLoader;
           11   12     3       prov  Ljava/security/Provider;
           14   18     3       prov  Ljava/security/Provider;
           10   11     4      clazz  Ljava/lang/Class<*>;
           13   14     4          e  Ljava/lang/ReflectiveOperationException;
      Exception table:
        from    to  target  type
           9    11      12  Class java.lang.ReflectiveOperationException
    MethodParameters:
           Name  Flags
      provClass  
      arg        
      cl         
}
SourceFile: "KeyStoreUtil.java"
InnerClasses:
  public ExpandException = sun.security.util.PropertyExpander$ExpandException of sun.security.util.PropertyExpander