public final class java.security.Security
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: java.security.Security
  super_class: java.lang.Object
{
  private static final sun.security.util.Debug sdebug;
    descriptor: Lsun/security/util/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static java.util.Properties props;
    descriptor: Ljava/util/Properties;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final java.util.Map<java.lang.String, java.lang.Class<?>> spiMap;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 49
            ldc "properties"
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
         1: .line 48
            putstatic java.security.Security.sdebug:Lsun/security/util/Debug;
         2: .line 65
            new java.security.Security$1
            dup
            invokespecial java.security.Security$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         3: .line 662
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
         4: .line 661
            putstatic java.security.Security.spiMap:Ljava/util/Map;
         5: .line 662
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void initialize();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=0
         0: .line 74
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
         1: .line 75
            iconst_0
            istore 0 /* loadedProps */
        start local 0 // boolean loadedProps
         2: .line 76
            iconst_0
            istore 1 /* overrideAll */
        start local 1 // boolean overrideAll
         3: .line 80
            ldc "java.security"
            invokestatic java.security.Security.securityPropFile:(Ljava/lang/String;)Ljava/io/File;
            astore 2 /* propFile */
        start local 2 // java.io.File propFile
         4: .line 81
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 41
         5: .line 82
            aconst_null
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         6: .line 84
            new java.io.FileInputStream
            dup
            aload 2 /* propFile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 4 /* fis */
        start local 4 // java.io.FileInputStream fis
         7: .line 85
            new java.io.BufferedInputStream
            dup
            aload 4 /* fis */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 3 /* is */
         8: .line 86
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 3 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         9: .line 87
            iconst_1
            istore 0 /* loadedProps */
        10: .line 89
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 35
        11: .line 90
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "reading security properties file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        12: .line 91
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 90
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // java.io.FileInputStream fis
        14: .line 93
            goto 35
      StackMap locals: int int java.io.File java.io.InputStream
      StackMap stack: java.io.IOException
        15: astore 4 /* e */
        start local 4 // java.io.IOException e
        16: .line 94
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 21
        17: .line 95
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "unable to load security properties from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 96
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 95
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        20: .line 97
            aload 4 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 4 // java.io.IOException e
        21: .line 100
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        22: .line 102
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        23: .line 103
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 104
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        26: .line 105
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
            goto 41
        27: .line 99
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        28: .line 100
            aload 3 /* is */
            ifnull 34
        29: .line 102
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        30: .line 103
            goto 34
      StackMap locals: int int java.io.File java.io.InputStream top java.lang.Throwable
      StackMap stack: java.io.IOException
        31: pop
        32: .line 104
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 34
        33: .line 105
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        34: .line 109
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        35: .line 100
      StackMap locals: int int java.io.File java.io.InputStream
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        36: .line 102
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        37: .line 103
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        38: pop
        39: .line 104
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        40: .line 105
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 3 // java.io.InputStream is
        41: .line 112
      StackMap locals:
      StackMap stack:
            ldc "true"
            getstatic java.security.Security.props:Ljava/util/Properties;
        42: .line 113
            ldc "security.overridePropertiesFile"
        43: .line 112
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        44: .line 113
            ifeq 106
        45: .line 116
            ldc "java.security.properties"
        46: .line 115
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        start local 3 // java.lang.String extraPropFile
        47: .line 117
            aload 3 /* extraPropFile */
            ifnull 50
            aload 3 /* extraPropFile */
            ldc "="
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 50
        48: .line 118
            iconst_1
            istore 1 /* overrideAll */
        49: .line 119
            aload 3 /* extraPropFile */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* extraPropFile */
        50: .line 122
      StackMap locals: java.lang.String
      StackMap stack:
            iload 1 /* overrideAll */
            ifeq 56
        51: .line 123
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
        52: .line 124
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 56
        53: .line 125
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        54: .line 126
            ldc "overriding other security properties files!"
        55: .line 125
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        56: .line 132
      StackMap locals:
      StackMap stack:
            aload 3 /* extraPropFile */
            ifnull 106
        57: .line 133
            aconst_null
            astore 4 /* bis */
        start local 4 // java.io.BufferedInputStream bis
        58: .line 137
            aload 3 /* extraPropFile */
            invokestatic sun.security.util.PropertyExpander.expand:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        59: .line 138
            new java.io.File
            dup
            aload 3 /* extraPropFile */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* propFile */
        60: .line 139
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 65
        61: .line 140
            new java.net.URL
            dup
        62: .line 141
            new java.lang.StringBuilder
            dup
            ldc "file:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* propFile */
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 140
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 5 /* propURL */
        start local 5 // java.net.URL propURL
        64: .line 142
            goto 66
        end local 5 // java.net.URL propURL
        65: .line 143
      StackMap locals: java.io.BufferedInputStream
      StackMap stack:
            new java.net.URL
            dup
            aload 3 /* extraPropFile */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 5 /* propURL */
        start local 5 // java.net.URL propURL
        66: .line 145
      StackMap locals: java.net.URL
      StackMap stack:
            new java.io.BufferedInputStream
            dup
            aload 5 /* propURL */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* bis */
        67: .line 146
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 4 /* bis */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        68: .line 147
            iconst_1
            istore 0 /* loadedProps */
        69: .line 149
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 100
        70: .line 150
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "reading security properties file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        71: .line 151
            aload 5 /* propURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        72: .line 150
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        73: .line 152
            iload 1 /* overrideAll */
            ifeq 100
        74: .line 153
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        75: .line 154
            ldc "overriding other security properties files!"
        76: .line 153
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 5 // java.net.URL propURL
        77: .line 157
            goto 100
      StackMap locals: int int java.io.File java.lang.String java.io.BufferedInputStream
      StackMap stack: java.lang.Exception
        78: astore 5 /* e */
        start local 5 // java.lang.Exception e
        79: .line 158
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 86
        80: .line 159
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        81: .line 160
            new java.lang.StringBuilder
            dup
            ldc "unable to load security properties from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        82: .line 161
            aload 3 /* extraPropFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        83: .line 160
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        84: .line 159
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        85: .line 162
            aload 5 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 5 // java.lang.Exception e
        86: .line 165
      StackMap locals:
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
        87: .line 167
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        88: .line 168
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
        89: pop
        90: .line 169
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
        91: .line 170
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
            goto 106
        92: .line 164
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        93: .line 165
            aload 4 /* bis */
            ifnull 99
        94: .line 167
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        95: .line 168
            goto 99
      StackMap locals: int int java.io.File java.lang.String java.io.BufferedInputStream top java.lang.Throwable
      StackMap stack: java.io.IOException
        96: pop
        97: .line 169
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 99
        98: .line 170
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        99: .line 174
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
       100: .line 165
      StackMap locals: int int java.io.File java.lang.String java.io.BufferedInputStream
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
       101: .line 167
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
       102: .line 168
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
       103: pop
       104: .line 169
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
       105: .line 170
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to close input stream"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // java.io.BufferedInputStream bis
        end local 3 // java.lang.String extraPropFile
       106: .line 178
      StackMap locals:
      StackMap stack:
            iload 0 /* loadedProps */
            ifne 110
       107: .line 179
            invokestatic java.security.Security.initializeStatic:()V
       108: .line 180
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 110
       109: .line 181
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ldc "unable to load security properties -- using defaults"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
       110: .line 186
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.File propFile
        end local 1 // boolean overrideAll
        end local 0 // boolean loadedProps
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            2  111     0    loadedProps  Z
            3  111     1    overrideAll  Z
            4  111     2       propFile  Ljava/io/File;
            6   41     3             is  Ljava/io/InputStream;
            7   14     4            fis  Ljava/io/FileInputStream;
           16   21     4              e  Ljava/io/IOException;
           47  106     3  extraPropFile  Ljava/lang/String;
           58  106     4            bis  Ljava/io/BufferedInputStream;
           64   65     5        propURL  Ljava/net/URL;
           66   77     5        propURL  Ljava/net/URL;
           79   86     5              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           6    14      15  Class java.io.IOException
          22    23      24  Class java.io.IOException
           6    21      27  any
          29    30      31  Class java.io.IOException
          36    37      38  Class java.io.IOException
          58    77      78  Class java.lang.Exception
          87    88      89  Class java.io.IOException
          58    86      92  any
          94    95      96  Class java.io.IOException
         101   102     103  Class java.io.IOException

  private static void initializeStatic();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 193
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.1"
            ldc "sun.security.provider.Sun"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 194
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.2"
            ldc "sun.security.rsa.SunRsaSign"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 195
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.3"
            ldc "com.sun.net.ssl.internal.ssl.Provider"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 196
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.4"
            ldc "com.sun.crypto.provider.SunJCE"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 197
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.5"
            ldc "sun.security.jgss.SunProvider"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 198
            getstatic java.security.Security.props:Ljava/util/Properties;
            ldc "security.provider.6"
            ldc "com.sun.security.sasl.Provider"
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 199
            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 // java.security.Security this
         0: .line 204
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 205
            return
        end local 0 // java.security.Security this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/security/Security;

  private static java.io.File securityPropFile(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String filename
         0: .line 210
            getstatic java.io.File.separator:Ljava/lang/String;
            astore 1 /* sep */
        start local 1 // java.lang.String sep
         1: .line 211
            new java.io.File
            dup
            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 1 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "lib"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 212
            ldc "security"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* filename */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 211
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String sep
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  filename  Ljava/lang/String;
            1    4     1       sep  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  

  private static java.security.Security$ProviderProperty getProviderProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/Security$ProviderProperty;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=1
        start local 0 // java.lang.String key
         0: .line 223
            aconst_null
            astore 1 /* entry */
        start local 1 // java.security.Security$ProviderProperty entry
         1: .line 225
            invokestatic sun.security.jca.Providers.getProviderList:()Lsun/security/jca/ProviderList;
            invokevirtual sun.security.jca.ProviderList.providers:()Ljava/util/List;
            astore 2 /* providers */
        start local 2 // java.util.List providers
         2: .line 226
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 21
         4: .line 228
      StackMap locals: java.security.Security$ProviderProperty java.util.List int
      StackMap stack:
            aconst_null
            astore 4 /* matchKey */
        start local 4 // java.lang.String matchKey
         5: .line 229
            aload 2 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.security.Provider
            astore 5 /* prov */
        start local 5 // java.security.Provider prov
         6: .line 230
            aload 5 /* prov */
            aload 0 /* key */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* prop */
        start local 6 // java.lang.String prop
         7: .line 232
            aload 6 /* prop */
            ifnonnull 15
         8: .line 235
            aload 5 /* prov */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 7 /* e */
        start local 7 // java.util.Enumeration e
         9: .line 236
            goto 14
        10: .line 237
      StackMap locals: java.lang.String java.security.Security$ProviderProperty java.util.List int java.lang.String java.security.Provider java.lang.String java.util.Enumeration
      StackMap stack:
            aload 7 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* matchKey */
        11: .line 238
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 239
            aload 5 /* prov */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* prop */
        13: .line 240
            goto 15
        14: .line 236
      StackMap locals:
      StackMap stack:
            aload 7 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifeq 15
            aload 6 /* prop */
            ifnull 10
        end local 7 // java.util.Enumeration e
        15: .line 245
      StackMap locals:
      StackMap stack:
            aload 6 /* prop */
            ifnull 20
        16: .line 246
            new java.security.Security$ProviderProperty
            dup
            invokespecial java.security.Security$ProviderProperty.<init>:()V
            astore 7 /* newEntry */
        start local 7 // java.security.Security$ProviderProperty newEntry
        17: .line 247
            aload 7 /* newEntry */
            aload 6 /* prop */
            putfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
        18: .line 248
            aload 7 /* newEntry */
            aload 5 /* prov */
            putfield java.security.Security$ProviderProperty.provider:Ljava/security/Provider;
        19: .line 249
            aload 7 /* newEntry */
            areturn
        end local 7 // java.security.Security$ProviderProperty newEntry
        end local 6 // java.lang.String prop
        end local 5 // java.security.Provider prov
        end local 4 // java.lang.String matchKey
        20: .line 226
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 3 /* i */
            aload 2 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 4
        end local 3 // int i
        22: .line 253
            aload 1 /* entry */
            areturn
        end local 2 // java.util.List providers
        end local 1 // java.security.Security$ProviderProperty entry
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0        key  Ljava/lang/String;
            1   23     1      entry  Ljava/security/Security$ProviderProperty;
            2   23     2  providers  Ljava/util/List<Ljava/security/Provider;>;
            3   22     3          i  I
            5   20     4   matchKey  Ljava/lang/String;
            6   20     5       prov  Ljava/security/Provider;
            7   20     6       prop  Ljava/lang/String;
            9   15     7          e  Ljava/util/Enumeration<Ljava/lang/Object;>;
           17   20     7   newEntry  Ljava/security/Security$ProviderProperty;
    MethodParameters:
      Name  Flags
      key   

  private static java.lang.String getProviderProperty(java.lang.String, java.security.Provider);
    descriptor: (Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.security.Provider provider
         0: .line 260
            aload 1 /* provider */
            aload 0 /* key */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* prop */
        start local 2 // java.lang.String prop
         1: .line 261
            aload 2 /* prop */
            ifnonnull 9
         2: .line 264
            aload 1 /* provider */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         3: .line 265
            goto 8
         4: .line 266
      StackMap locals: java.lang.String java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* matchKey */
        start local 4 // java.lang.String matchKey
         5: .line 267
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 268
            aload 1 /* provider */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* prop */
         7: .line 269
            goto 9
        end local 4 // java.lang.String matchKey
         8: .line 265
      StackMap locals:
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifeq 9
            aload 2 /* prop */
            ifnull 4
        end local 3 // java.util.Enumeration e
         9: .line 273
      StackMap locals:
      StackMap stack:
            aload 2 /* prop */
            areturn
        end local 2 // java.lang.String prop
        end local 1 // java.security.Provider provider
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0       key  Ljava/lang/String;
            0   10     1  provider  Ljava/security/Provider;
            1   10     2      prop  Ljava/lang/String;
            3    9     3         e  Ljava/util/Enumeration<Ljava/lang/Object;>;
            5    8     4  matchKey  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      key       
      provider  

  public static java.lang.String getAlgorithmProperty(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String algName
        start local 1 // java.lang.String propName
         0: .line 302
            new java.lang.StringBuilder
            dup
            ldc "Alg."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* propName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         1: .line 303
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* algName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 302
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.getProviderProperty:(Ljava/lang/String;)Ljava/security/Security$ProviderProperty;
            astore 2 /* entry */
        start local 2 // java.security.Security$ProviderProperty entry
         3: .line 304
            aload 2 /* entry */
            ifnull 5
         4: .line 305
            aload 2 /* entry */
            getfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
            areturn
         5: .line 307
      StackMap locals: java.security.Security$ProviderProperty
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.security.Security$ProviderProperty entry
        end local 1 // java.lang.String propName
        end local 0 // java.lang.String algName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0   algName  Ljava/lang/String;
            0    6     1  propName  Ljava/lang/String;
            3    6     2     entry  Ljava/security/Security$ProviderProperty;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      algName   
      propName  

  public static synchronized int insertProviderAt(java.security.Provider, int);
    descriptor: (Ljava/security/Provider;I)I
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.security.Provider provider
        start local 1 // int position
         0: .line 357
            aload 0 /* provider */
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            astore 2 /* providerName */
        start local 2 // java.lang.String providerName
         1: .line 358
            new java.lang.StringBuilder
            dup
            ldc "insertProvider."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* providerName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.check:(Ljava/lang/String;)V
         2: .line 359
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 3 /* list */
        start local 3 // sun.security.jca.ProviderList list
         3: .line 360
            aload 3 /* list */
            aload 0 /* provider */
            iload 1 /* position */
            iconst_1
            isub
            invokestatic sun.security.jca.ProviderList.insertAt:(Lsun/security/jca/ProviderList;Ljava/security/Provider;I)Lsun/security/jca/ProviderList;
            astore 4 /* newList */
        start local 4 // sun.security.jca.ProviderList newList
         4: .line 361
            aload 3 /* list */
            aload 4 /* newList */
            if_acmpne 6
         5: .line 362
            iconst_m1
            ireturn
         6: .line 364
      StackMap locals: java.lang.String sun.security.jca.ProviderList sun.security.jca.ProviderList
      StackMap stack:
            aload 4 /* newList */
            invokestatic sun.security.jca.Providers.setProviderList:(Lsun/security/jca/ProviderList;)V
         7: .line 365
            aload 4 /* newList */
            aload 2 /* providerName */
            invokevirtual sun.security.jca.ProviderList.getIndex:(Ljava/lang/String;)I
            iconst_1
            iadd
            ireturn
        end local 4 // sun.security.jca.ProviderList newList
        end local 3 // sun.security.jca.ProviderList list
        end local 2 // java.lang.String providerName
        end local 1 // int position
        end local 0 // java.security.Provider provider
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0      provider  Ljava/security/Provider;
            0    8     1      position  I
            1    8     2  providerName  Ljava/lang/String;
            3    8     3          list  Lsun/security/jca/ProviderList;
            4    8     4       newList  Lsun/security/jca/ProviderList;
    MethodParameters:
          Name  Flags
      provider  
      position  

  public static int addProvider(java.security.Provider);
    descriptor: (Ljava/security/Provider;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.Provider provider
         0: .line 406
            aload 0 /* provider */
            iconst_0
            invokestatic java.security.Security.insertProviderAt:(Ljava/security/Provider;I)I
            ireturn
        end local 0 // java.security.Provider provider
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  provider  Ljava/security/Provider;
    MethodParameters:
          Name  Flags
      provider  

  public static synchronized void removeProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String name
         0: .line 442
            new java.lang.StringBuilder
            dup
            ldc "removeProvider."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.check:(Ljava/lang/String;)V
         1: .line 443
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 1 /* list */
        start local 1 // sun.security.jca.ProviderList list
         2: .line 444
            aload 1 /* list */
            aload 0 /* name */
            invokestatic sun.security.jca.ProviderList.remove:(Lsun/security/jca/ProviderList;Ljava/lang/String;)Lsun/security/jca/ProviderList;
            astore 2 /* newList */
        start local 2 // sun.security.jca.ProviderList newList
         3: .line 445
            aload 2 /* newList */
            invokestatic sun.security.jca.Providers.setProviderList:(Lsun/security/jca/ProviderList;)V
         4: .line 446
            return
        end local 2 // sun.security.jca.ProviderList newList
        end local 1 // sun.security.jca.ProviderList list
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     name  Ljava/lang/String;
            2    5     1     list  Lsun/security/jca/ProviderList;
            3    5     2  newList  Lsun/security/jca/ProviderList;
    MethodParameters:
      Name  Flags
      name  

  public static java.security.Provider[] getProviders();
    descriptor: ()[Ljava/security/Provider;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 455
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            invokevirtual sun.security.jca.ProviderList.toArray:()[Ljava/security/Provider;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.security.Provider getProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/Provider;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 471
            invokestatic sun.security.jca.Providers.getProviderList:()Lsun/security/jca/ProviderList;
            aload 0 /* name */
            invokevirtual sun.security.jca.ProviderList.getProvider:(Ljava/lang/String;)Ljava/security/Provider;
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public static java.security.Provider[] getProviders(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/security/Provider;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.String filter
         0: .line 534
            aconst_null
            astore 1 /* key */
        start local 1 // java.lang.String key
         1: .line 535
            aconst_null
            astore 2 /* value */
        start local 2 // java.lang.String value
         2: .line 536
            aload 0 /* filter */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            istore 3 /* index */
        start local 3 // int index
         3: .line 538
            iload 3 /* index */
            iconst_m1
            if_icmpne 7
         4: .line 539
            aload 0 /* filter */
            astore 1 /* key */
         5: .line 540
            ldc ""
            astore 2 /* value */
         6: .line 541
            goto 9
         7: .line 542
      StackMap locals: java.lang.String java.lang.String int
      StackMap stack:
            aload 0 /* filter */
            iconst_0
            iload 3 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* key */
         8: .line 543
            aload 0 /* filter */
            iload 3 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* value */
         9: .line 547
      StackMap locals:
      StackMap stack:
            new java.util.Hashtable
            dup
            iconst_1
            invokespecial java.util.Hashtable.<init>:(I)V
        10: .line 546
            astore 4 /* hashtableFilter */
        start local 4 // java.util.Hashtable hashtableFilter
        11: .line 548
            aload 4 /* hashtableFilter */
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 550
            aload 4 /* hashtableFilter */
            invokestatic java.security.Security.getProviders:(Ljava/util/Map;)[Ljava/security/Provider;
            areturn
        end local 4 // java.util.Hashtable hashtableFilter
        end local 3 // int index
        end local 2 // java.lang.String value
        end local 1 // java.lang.String key
        end local 0 // java.lang.String filter
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0           filter  Ljava/lang/String;
            1   13     1              key  Ljava/lang/String;
            2   13     2            value  Ljava/lang/String;
            3   13     3            index  I
           11   13     4  hashtableFilter  Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
        Name  Flags
      filter  

  public static java.security.Provider[] getProviders(java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/util/Map;)[Ljava/security/Provider;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=1
        start local 0 // java.util.Map filter
         0: .line 605
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 1 /* allProviders */
        start local 1 // java.security.Provider[] allProviders
         1: .line 606
            aload 0 /* filter */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 2 /* keySet */
        start local 2 // java.util.Set keySet
         2: .line 607
            new java.util.LinkedHashSet
            dup
            iconst_5
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 3 /* candidates */
        start local 3 // java.util.LinkedHashSet candidates
         3: .line 611
            aload 2 /* keySet */
            ifnull 4
            aload 1 /* allProviders */
            ifnonnull 5
         4: .line 612
      StackMap locals: java.security.Provider[] java.util.Set java.util.LinkedHashSet
      StackMap stack:
            aload 1 /* allProviders */
            areturn
         5: .line 615
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 4 /* firstSearch */
        start local 4 // boolean firstSearch
         6: .line 619
            aload 2 /* keySet */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5 /* ite */
        start local 5 // java.util.Iterator ite
         7: goto 26
         8: .line 620
      StackMap locals: int java.util.Iterator
      StackMap stack:
            aload 5 /* ite */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* key */
        start local 6 // java.lang.String key
         9: .line 621
            aload 0 /* filter */
            aload 6 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* value */
        start local 7 // java.lang.String value
        10: .line 623
            aload 6 /* key */
            aload 7 /* value */
        11: .line 624
            aload 1 /* allProviders */
        12: .line 623
            invokestatic java.security.Security.getAllQualifyingCandidates:(Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
            astore 8 /* newCandidates */
        start local 8 // java.util.LinkedHashSet newCandidates
        13: .line 625
            iload 4 /* firstSearch */
            ifeq 16
        14: .line 626
            aload 8 /* newCandidates */
            astore 3 /* candidates */
        15: .line 627
            iconst_0
            istore 4 /* firstSearch */
        16: .line 630
      StackMap locals: java.lang.String java.lang.String java.util.LinkedHashSet
      StackMap stack:
            aload 8 /* newCandidates */
            ifnull 24
            aload 8 /* newCandidates */
            invokevirtual java.util.LinkedHashSet.isEmpty:()Z
            ifne 24
        17: .line 634
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.iterator:()Ljava/util/Iterator;
            astore 9 /* cansIte */
        start local 9 // java.util.Iterator cansIte
        18: .line 635
            goto 22
        19: .line 636
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.Provider
            astore 10 /* prov */
        start local 10 // java.security.Provider prov
        20: .line 637
            aload 8 /* newCandidates */
            aload 10 /* prov */
            invokevirtual java.util.LinkedHashSet.contains:(Ljava/lang/Object;)Z
            ifne 22
        21: .line 638
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.remove:()V
        end local 10 // java.security.Provider prov
        22: .line 635
      StackMap locals:
      StackMap stack:
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        end local 9 // java.util.Iterator cansIte
        23: .line 641
            goto 26
        24: .line 642
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* candidates */
        25: .line 643
            goto 27
        end local 8 // java.util.LinkedHashSet newCandidates
        end local 7 // java.lang.String value
        end local 6 // java.lang.String key
        26: .line 619
      StackMap locals:
      StackMap stack:
            aload 5 /* ite */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 5 // java.util.Iterator ite
        27: .line 647
      StackMap locals:
      StackMap stack:
            aload 3 /* candidates */
            ifnull 28
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.isEmpty:()Z
            ifeq 29
        28: .line 648
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        29: .line 650
      StackMap locals:
      StackMap stack:
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.toArray:()[Ljava/lang/Object;
            astore 5 /* candidatesArray */
        start local 5 // java.lang.Object[] candidatesArray
        30: .line 651
            aload 5 /* candidatesArray */
            arraylength
            anewarray java.security.Provider
            astore 6 /* result */
        start local 6 // java.security.Provider[] result
        31: .line 653
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        32: goto 35
        33: .line 654
      StackMap locals: java.lang.Object[] java.security.Provider[] int
      StackMap stack:
            aload 6 /* result */
            iload 7 /* i */
            aload 5 /* candidatesArray */
            iload 7 /* i */
            aaload
            checkcast java.security.Provider
            aastore
        34: .line 653
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 7 /* i */
            aload 6 /* result */
            arraylength
            if_icmplt 33
        end local 7 // int i
        36: .line 657
            aload 6 /* result */
            areturn
        end local 6 // java.security.Provider[] result
        end local 5 // java.lang.Object[] candidatesArray
        end local 4 // boolean firstSearch
        end local 3 // java.util.LinkedHashSet candidates
        end local 2 // java.util.Set keySet
        end local 1 // java.security.Provider[] allProviders
        end local 0 // java.util.Map filter
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   37     0           filter  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   37     1     allProviders  [Ljava/security/Provider;
            2   37     2           keySet  Ljava/util/Set<Ljava/lang/String;>;
            3   37     3       candidates  Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
            6   37     4      firstSearch  Z
            7   27     5              ite  Ljava/util/Iterator<Ljava/lang/String;>;
            9   26     6              key  Ljava/lang/String;
           10   26     7            value  Ljava/lang/String;
           13   26     8    newCandidates  Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
           18   23     9          cansIte  Ljava/util/Iterator<Ljava/security/Provider;>;
           20   22    10             prov  Ljava/security/Provider;
           30   37     5  candidatesArray  [Ljava/lang/Object;
           31   37     6           result  [Ljava/security/Provider;
           32   36     7                i  I
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)[Ljava/security/Provider;
    MethodParameters:
        Name  Flags
      filter  

  private static java.lang.Class<?> getSpiClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String type
         0: .line 670
            getstatic java.security.Security.spiMap:Ljava/util/Map;
            aload 0 /* type */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 1 /* clazz */
        start local 1 // java.lang.Class clazz
         1: .line 671
            aload 1 /* clazz */
            ifnull 3
         2: .line 672
            aload 1 /* clazz */
            areturn
         3: .line 675
      StackMap locals: java.lang.Class
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "java.security."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Spi"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 1 /* clazz */
         4: .line 676
            getstatic java.security.Security.spiMap:Ljava/util/Map;
            aload 0 /* type */
            aload 1 /* clazz */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 677
            aload 1 /* clazz */
         6: areturn
         7: .line 678
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* e */
        start local 2 // java.lang.ClassNotFoundException e
         8: .line 679
            new java.lang.AssertionError
            dup
            ldc "Spi class not found"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            aload 2 /* e */
            invokevirtual java.lang.AssertionError.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast java.lang.Error
            athrow
        end local 2 // java.lang.ClassNotFoundException e
        end local 1 // java.lang.Class clazz
        end local 0 // java.lang.String type
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   type  Ljava/lang/String;
            1    9     1  clazz  Ljava/lang/Class<*>;
            8    9     2      e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.ClassNotFoundException
    Signature: (Ljava/lang/String;)Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      type  

  static java.lang.Object[] getImpl(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.String algorithm
        start local 1 // java.lang.String type
        start local 2 // java.lang.String provider
         0: .line 693
            aload 2 /* provider */
            ifnonnull 5
         1: .line 695
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
         2: .line 694
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         3: .line 695
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         4: .line 694
            areturn
         5: .line 698
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 2 /* provider */
         6: .line 697
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         7: .line 698
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         8: .line 697
            areturn
        end local 2 // java.lang.String provider
        end local 1 // java.lang.String type
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  algorithm  Ljava/lang/String;
            0    9     1       type  Ljava/lang/String;
            0    9     2   provider  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
    MethodParameters:
           Name  Flags
      algorithm  
      type       
      provider   

  static java.lang.Object[] getImpl(java.lang.String, java.lang.String, java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.String algorithm
        start local 1 // java.lang.String type
        start local 2 // java.lang.String provider
        start local 3 // java.lang.Object params
         0: .line 705
            aload 2 /* provider */
            ifnonnull 5
         1: .line 707
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 3 /* params */
         2: .line 706
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Lsun/security/jca/GetInstance$Instance;
         3: .line 707
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         4: .line 706
            areturn
         5: .line 710
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 3 /* params */
            aload 2 /* provider */
         6: .line 709
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         7: .line 710
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         8: .line 709
            areturn
        end local 3 // java.lang.Object params
        end local 2 // java.lang.String provider
        end local 1 // java.lang.String type
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  algorithm  Ljava/lang/String;
            0    9     1       type  Ljava/lang/String;
            0    9     2   provider  Ljava/lang/String;
            0    9     3     params  Ljava/lang/Object;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
           Name  Flags
      algorithm  
      type       
      provider   
      params     

  static java.lang.Object[] getImpl(java.lang.String, java.lang.String, java.security.Provider);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.String algorithm
        start local 1 // java.lang.String type
        start local 2 // java.security.Provider provider
         0: .line 724
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 2 /* provider */
         1: .line 723
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
         2: .line 724
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         3: .line 723
            areturn
        end local 2 // java.security.Provider provider
        end local 1 // java.lang.String type
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  algorithm  Ljava/lang/String;
            0    4     1       type  Ljava/lang/String;
            0    4     2   provider  Ljava/security/Provider;
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
           Name  Flags
      algorithm  
      type       
      provider   

  static java.lang.Object[] getImpl(java.lang.String, java.lang.String, java.security.Provider, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;Ljava/lang/Object;)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.String algorithm
        start local 1 // java.lang.String type
        start local 2 // java.security.Provider provider
        start local 3 // java.lang.Object params
         0: .line 731
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 3 /* params */
            aload 2 /* provider */
         1: .line 730
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
         2: .line 731
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         3: .line 730
            areturn
        end local 3 // java.lang.Object params
        end local 2 // java.security.Provider provider
        end local 1 // java.lang.String type
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  algorithm  Ljava/lang/String;
            0    4     1       type  Ljava/lang/String;
            0    4     2   provider  Ljava/security/Provider;
            0    4     3     params  Ljava/lang/Object;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
           Name  Flags
      algorithm  
      type       
      provider   
      params     

  public static java.lang.String getProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // java.lang.String key
         0: .line 758
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sm */
        start local 1 // java.lang.SecurityManager sm
         1: .line 759
            aload 1 /* sm */
            ifnull 5
         2: .line 760
            aload 1 /* sm */
            new java.security.SecurityPermission
            dup
            new java.lang.StringBuilder
            dup
            ldc "getProperty."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 761
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.SecurityPermission.<init>:(Ljava/lang/String;)V
         4: .line 760
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 763
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 0 /* key */
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         6: .line 764
            aload 2 /* name */
            ifnull 8
         7: .line 765
            aload 2 /* name */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* name */
         8: .line 766
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* name */
            areturn
        end local 2 // java.lang.String name
        end local 1 // java.lang.SecurityManager sm
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0   key  Ljava/lang/String;
            1    9     1    sm  Ljava/lang/SecurityManager;
            6    9     2  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public static void setProperty(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.lang.String datum
         0: .line 792
            new java.lang.StringBuilder
            dup
            ldc "setProperty."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.check:(Ljava/lang/String;)V
         1: .line 793
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 0 /* key */
            aload 1 /* datum */
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 794
            aload 0 /* key */
            invokestatic java.security.Security.invalidateSMCache:(Ljava/lang/String;)V
         3: .line 795
            return
        end local 1 // java.lang.String datum
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0    key  Ljava/lang/String;
            0    4     1  datum  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      key    
      datum  

  private static void invalidateSMCache(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String key
         0: .line 809
            aload 0 /* key */
            ldc "package.access"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            istore 1 /* pa */
        start local 1 // boolean pa
         1: .line 810
            aload 0 /* key */
            ldc "package.definition"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            istore 2 /* pd */
        start local 2 // boolean pd
         2: .line 812
            iload 1 /* pa */
            ifne 3
            iload 2 /* pd */
            ifeq 4
         3: .line 813
      StackMap locals: int int
      StackMap stack:
            new java.security.Security$2
            dup
            iload 1 /* pa */
            invokespecial java.security.Security$2.<init>:(Z)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         4: .line 849
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean pd
        end local 1 // boolean pa
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0   key  Ljava/lang/String;
            1    5     1    pa  Z
            2    5     2    pd  Z
    MethodParameters:
      Name  Flags
      key   

  private static void check(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String directive
         0: .line 852
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* security */
        start local 1 // java.lang.SecurityManager security
         1: .line 853
            aload 1 /* security */
            ifnull 3
         2: .line 854
            aload 1 /* security */
            aload 0 /* directive */
            invokevirtual java.lang.SecurityManager.checkSecurityAccess:(Ljava/lang/String;)V
         3: .line 856
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            return
        end local 1 // java.lang.SecurityManager security
        end local 0 // java.lang.String directive
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  directive  Ljava/lang/String;
            1    4     1   security  Ljava/lang/SecurityManager;
    MethodParameters:
           Name  Flags
      directive  

  private static java.util.LinkedHashSet<java.security.Provider> getAllQualifyingCandidates(java.lang.String, java.lang.String, java.security.Provider[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // java.lang.String filterKey
        start local 1 // java.lang.String filterValue
        start local 2 // java.security.Provider[] allProviders
         0: .line 866
            aload 0 /* filterKey */
         1: .line 867
            aload 1 /* filterValue */
         2: .line 866
            invokestatic java.security.Security.getFilterComponents:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* filterComponents */
        start local 3 // java.lang.String[] filterComponents
         3: .line 872
            aload 3 /* filterComponents */
            iconst_0
            aaload
            astore 4 /* serviceName */
        start local 4 // java.lang.String serviceName
         4: .line 873
            aload 3 /* filterComponents */
            iconst_1
            aaload
            astore 5 /* algName */
        start local 5 // java.lang.String algName
         5: .line 874
            aload 3 /* filterComponents */
            iconst_2
            aaload
            astore 6 /* attrName */
        start local 6 // java.lang.String attrName
         6: .line 876
            aload 4 /* serviceName */
            aload 5 /* algName */
            aload 6 /* attrName */
         7: .line 877
            aload 1 /* filterValue */
            aload 2 /* allProviders */
         8: .line 876
            invokestatic java.security.Security.getProvidersNotUsingCache:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
            areturn
        end local 6 // java.lang.String attrName
        end local 5 // java.lang.String algName
        end local 4 // java.lang.String serviceName
        end local 3 // java.lang.String[] filterComponents
        end local 2 // java.security.Provider[] allProviders
        end local 1 // java.lang.String filterValue
        end local 0 // java.lang.String filterKey
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0         filterKey  Ljava/lang/String;
            0    9     1       filterValue  Ljava/lang/String;
            0    9     2      allProviders  [Ljava/security/Provider;
            3    9     3  filterComponents  [Ljava/lang/String;
            4    9     4       serviceName  Ljava/lang/String;
            5    9     5           algName  Ljava/lang/String;
            6    9     6          attrName  Ljava/lang/String;
    Signature: (Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
    MethodParameters:
              Name  Flags
      filterKey     
      filterValue   
      allProviders  

  private static java.util.LinkedHashSet<java.security.Provider> getProvidersNotUsingCache(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.security.Provider[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // java.lang.String serviceName
        start local 1 // java.lang.String algName
        start local 2 // java.lang.String attrName
        start local 3 // java.lang.String filterValue
        start local 4 // java.security.Provider[] allProviders
         0: .line 886
            new java.util.LinkedHashSet
            dup
            iconst_5
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 5 /* candidates */
        start local 5 // java.util.LinkedHashSet candidates
         1: .line 887
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         2: goto 10
         3: .line 888
      StackMap locals: java.util.LinkedHashSet int
      StackMap stack:
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            aload 0 /* serviceName */
         4: .line 889
            aload 1 /* algName */
         5: .line 890
            aload 2 /* attrName */
            aload 3 /* filterValue */
         6: .line 888
            invokestatic java.security.Security.isCriterionSatisfied:(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
         7: .line 890
            ifeq 9
         8: .line 891
            aload 5 /* candidates */
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            invokevirtual java.util.LinkedHashSet.add:(Ljava/lang/Object;)Z
            pop
         9: .line 887
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 6 /* i */
            aload 4 /* allProviders */
            arraylength
            if_icmplt 3
        end local 6 // int i
        11: .line 894
            aload 5 /* candidates */
            areturn
        end local 5 // java.util.LinkedHashSet candidates
        end local 4 // java.security.Provider[] allProviders
        end local 3 // java.lang.String filterValue
        end local 2 // java.lang.String attrName
        end local 1 // java.lang.String algName
        end local 0 // java.lang.String serviceName
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0   serviceName  Ljava/lang/String;
            0   12     1       algName  Ljava/lang/String;
            0   12     2      attrName  Ljava/lang/String;
            0   12     3   filterValue  Ljava/lang/String;
            0   12     4  allProviders  [Ljava/security/Provider;
            1   12     5    candidates  Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
            2   11     6             i  I
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
    MethodParameters:
              Name  Flags
      serviceName   
      algName       
      attrName      
      filterValue   
      allProviders  

  private static boolean isCriterionSatisfied(java.security.Provider, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // java.security.Provider prov
        start local 1 // java.lang.String serviceName
        start local 2 // java.lang.String algName
        start local 3 // java.lang.String attrName
        start local 4 // java.lang.String filterValue
         0: .line 906
            new java.lang.StringBuilder
            dup
            aload 1 /* serviceName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 46
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 2 /* algName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* key */
        start local 5 // java.lang.String key
         1: .line 908
            aload 3 /* attrName */
            ifnull 3
         2: .line 909
            new java.lang.StringBuilder
            dup
            aload 5 /* key */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* attrName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* key */
         3: .line 913
      StackMap locals: java.lang.String
      StackMap stack:
            aload 5 /* key */
            aload 0 /* prov */
            invokestatic java.security.Security.getProviderProperty:(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
            astore 6 /* propValue */
        start local 6 // java.lang.String propValue
         4: .line 915
            aload 6 /* propValue */
            ifnonnull 18
         5: .line 918
            new java.lang.StringBuilder
            dup
            ldc "Alg.Alias."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 919
            aload 1 /* serviceName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 920
            aload 2 /* algName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 918
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 921
            aload 0 /* prov */
        10: .line 918
            invokestatic java.security.Security.getProviderProperty:(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
            astore 7 /* standardName */
        start local 7 // java.lang.String standardName
        11: .line 922
            aload 7 /* standardName */
            ifnull 16
        12: .line 923
            new java.lang.StringBuilder
            dup
            aload 1 /* serviceName */
            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 7 /* standardName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* key */
        13: .line 925
            aload 3 /* attrName */
            ifnull 15
        14: .line 926
            new java.lang.StringBuilder
            dup
            aload 5 /* key */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* attrName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* key */
        15: .line 929
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 5 /* key */
            aload 0 /* prov */
            invokestatic java.security.Security.getProviderProperty:(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
            astore 6 /* propValue */
        16: .line 932
      StackMap locals:
      StackMap stack:
            aload 6 /* propValue */
            ifnonnull 18
        17: .line 935
            iconst_0
            ireturn
        end local 7 // java.lang.String standardName
        18: .line 943
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            ifnonnull 20
        19: .line 944
            iconst_1
            ireturn
        20: .line 949
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            invokestatic java.security.Security.isStandardAttr:(Ljava/lang/String;)Z
            ifeq 22
        21: .line 950
            aload 3 /* attrName */
            aload 4 /* filterValue */
            aload 6 /* propValue */
            invokestatic java.security.Security.isConstraintSatisfied:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
            ireturn
        22: .line 952
      StackMap locals:
      StackMap stack:
            aload 4 /* filterValue */
            aload 6 /* propValue */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
        end local 6 // java.lang.String propValue
        end local 5 // java.lang.String key
        end local 4 // java.lang.String filterValue
        end local 3 // java.lang.String attrName
        end local 2 // java.lang.String algName
        end local 1 // java.lang.String serviceName
        end local 0 // java.security.Provider prov
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0          prov  Ljava/security/Provider;
            0   23     1   serviceName  Ljava/lang/String;
            0   23     2       algName  Ljava/lang/String;
            0   23     3      attrName  Ljava/lang/String;
            0   23     4   filterValue  Ljava/lang/String;
            1   23     5           key  Ljava/lang/String;
            4   23     6     propValue  Ljava/lang/String;
           11   18     7  standardName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      prov         
      serviceName  
      algName      
      attrName     
      filterValue  

  private static boolean isStandardAttr(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String attribute
         0: .line 963
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 964
            iconst_1
            ireturn
         2: .line 966
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 967
            iconst_1
            ireturn
         4: .line 969
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // java.lang.String attribute
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  attribute  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      attribute  

  private static boolean isConstraintSatisfied(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.lang.String attribute
        start local 1 // java.lang.String value
        start local 2 // java.lang.String prop
         0: .line 981
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 6
         1: .line 982
            aload 1 /* value */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* requestedSize */
        start local 3 // int requestedSize
         2: .line 983
            aload 2 /* prop */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 4 /* maxSize */
        start local 4 // int maxSize
         3: .line 984
            iload 3 /* requestedSize */
            iload 4 /* maxSize */
            if_icmpgt 5
         4: .line 985
            iconst_1
            ireturn
         5: .line 987
      StackMap locals: int int
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // int maxSize
        end local 3 // int requestedSize
         6: .line 993
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 994
            aload 1 /* value */
            aload 2 /* prop */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
         8: .line 997
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.lang.String prop
        end local 1 // java.lang.String value
        end local 0 // java.lang.String attribute
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0      attribute  Ljava/lang/String;
            0    9     1          value  Ljava/lang/String;
            0    9     2           prop  Ljava/lang/String;
            2    6     3  requestedSize  I
            3    6     4        maxSize  I
    MethodParameters:
           Name  Flags
      attribute  
      value      
      prop       

  static java.lang.String[] getFilterComponents(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // java.lang.String filterKey
        start local 1 // java.lang.String filterValue
         0: .line 1001
            aload 0 /* filterKey */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 2 /* algIndex */
        start local 2 // int algIndex
         1: .line 1003
            iload 2 /* algIndex */
            ifge 3
         2: .line 1006
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 1009
      StackMap locals: int
      StackMap stack:
            aload 0 /* filterKey */
            iconst_0
            iload 2 /* algIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* serviceName */
        start local 3 // java.lang.String serviceName
         4: .line 1010
            aconst_null
            astore 4 /* algName */
        start local 4 // java.lang.String algName
         5: .line 1011
            aconst_null
            astore 5 /* attrName */
        start local 5 // java.lang.String attrName
         6: .line 1013
            aload 1 /* filterValue */
            invokevirtual java.lang.String.length:()I
            ifne 10
         7: .line 1016
            aload 0 /* filterKey */
            iload 2 /* algIndex */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 4 /* algName */
         8: .line 1017
            aload 4 /* algName */
            invokevirtual java.lang.String.length:()I
            ifne 20
         9: .line 1019
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1025
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* filterKey */
            bipush 32
            invokevirtual java.lang.String.indexOf:(I)I
            istore 6 /* attrIndex */
        start local 6 // int attrIndex
        11: .line 1027
            iload 6 /* attrIndex */
            iconst_m1
            if_icmpne 13
        12: .line 1029
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 1031
      StackMap locals: int
      StackMap stack:
            aload 0 /* filterKey */
            iload 6 /* attrIndex */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 5 /* attrName */
        14: .line 1032
            aload 5 /* attrName */
            invokevirtual java.lang.String.length:()I
            ifne 16
        15: .line 1034
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 1039
      StackMap locals:
      StackMap stack:
            iload 6 /* attrIndex */
            iload 2 /* algIndex */
            if_icmplt 18
        17: .line 1040
            iload 2 /* algIndex */
            iload 6 /* attrIndex */
            iconst_1
            isub
            if_icmpne 19
        18: .line 1041
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 1043
      StackMap locals:
      StackMap stack:
            aload 0 /* filterKey */
            iload 2 /* algIndex */
            iconst_1
            iadd
            iload 6 /* attrIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* algName */
        end local 6 // int attrIndex
        20: .line 1047
      StackMap locals:
      StackMap stack:
            iconst_3
            anewarray java.lang.String
            astore 6 /* result */
        start local 6 // java.lang.String[] result
        21: .line 1048
            aload 6 /* result */
            iconst_0
            aload 3 /* serviceName */
            aastore
        22: .line 1049
            aload 6 /* result */
            iconst_1
            aload 4 /* algName */
            aastore
        23: .line 1050
            aload 6 /* result */
            iconst_2
            aload 5 /* attrName */
            aastore
        24: .line 1052
            aload 6 /* result */
            areturn
        end local 6 // java.lang.String[] result
        end local 5 // java.lang.String attrName
        end local 4 // java.lang.String algName
        end local 3 // java.lang.String serviceName
        end local 2 // int algIndex
        end local 1 // java.lang.String filterValue
        end local 0 // java.lang.String filterKey
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   25     0    filterKey  Ljava/lang/String;
            0   25     1  filterValue  Ljava/lang/String;
            1   25     2     algIndex  I
            4   25     3  serviceName  Ljava/lang/String;
            5   25     4      algName  Ljava/lang/String;
            6   25     5     attrName  Ljava/lang/String;
           11   20     6    attrIndex  I
           21   25     6       result  [Ljava/lang/String;
    MethodParameters:
             Name  Flags
      filterKey    
      filterValue  

  public static java.util.Set<java.lang.String> getAlgorithms(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Set;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.lang.String serviceName
         0: .line 1078
            aload 0 /* serviceName */
            ifnull 2
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            ifeq 2
         1: .line 1079
            aload 0 /* serviceName */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 1080
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            areturn
         3: .line 1083
      StackMap locals:
      StackMap stack:
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* result */
        start local 1 // java.util.HashSet result
         4: .line 1084
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 2 /* providers */
        start local 2 // java.security.Provider[] providers
         5: .line 1086
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 15
         7: .line 1088
      StackMap locals: java.util.HashSet java.security.Provider[] int
      StackMap stack:
            aload 2 /* providers */
            iload 3 /* i */
            aaload
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 4 /* e */
        start local 4 // java.util.Enumeration e
         8: .line 1089
            goto 13
         9: .line 1090
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
            astore 5 /* currentKey */
        start local 5 // java.lang.String currentKey
        10: .line 1091
            aload 5 /* currentKey */
            aload 0 /* serviceName */
            invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 13
        11: .line 1098
            aload 5 /* currentKey */
            ldc " "
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifge 13
        12: .line 1099
            aload 1 /* result */
            aload 5 /* currentKey */
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String currentKey
        13: .line 1089
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 9
        end local 4 // java.util.Enumeration e
        14: .line 1086
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 3 /* i */
            aload 2 /* providers */
            arraylength
            if_icmplt 7
        end local 3 // int i
        16: .line 1104
            aload 1 /* result */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            areturn
        end local 2 // java.security.Provider[] providers
        end local 1 // java.util.HashSet result
        end local 0 // java.lang.String serviceName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0  serviceName  Ljava/lang/String;
            4   17     1       result  Ljava/util/HashSet<Ljava/lang/String;>;
            5   17     2    providers  [Ljava/security/Provider;
            6   16     3            i  I
            8   14     4            e  Ljava/util/Enumeration<Ljava/lang/Object;>;
           10   13     5   currentKey  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
             Name  Flags
      serviceName  
}
SourceFile: "Security.java"
NestMembers:
  java.security.Security$1  java.security.Security$2  java.security.Security$ProviderProperty
InnerClasses:
  java.security.Security$1
  java.security.Security$2
  private ProviderProperty = java.security.Security$ProviderProperty of java.security.Security
  public final Instance = sun.security.jca.GetInstance$Instance of sun.security.jca.GetInstance