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 58
            ldc "properties"
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
         1: .line 57
            putstatic java.security.Security.sdebug:Lsun/security/util/Debug;
         2: .line 74
            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 667
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
         4: .line 666
            putstatic java.security.Security.spiMap:Ljava/util/Map;
         5: .line 667
            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 83
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
         1: .line 84
            iconst_0
            istore 0 /* loadedProps */
        start local 0 // boolean loadedProps
         2: .line 85
            iconst_0
            istore 1 /* overrideAll */
        start local 1 // boolean overrideAll
         3: .line 89
            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 90
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 41
         5: .line 91
            aconst_null
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         6: .line 93
            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 94
            new java.io.BufferedInputStream
            dup
            aload 4 /* fis */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 3 /* is */
         8: .line 95
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 3 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         9: .line 96
            iconst_1
            istore 0 /* loadedProps */
        10: .line 98
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 35
        11: .line 99
            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 100
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 99
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // java.io.FileInputStream fis
        14: .line 102
            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 103
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 21
        17: .line 104
            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 105
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 104
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        20: .line 106
            aload 4 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 4 // java.io.IOException e
        21: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        22: .line 111
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        23: .line 112
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 113
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        26: .line 114
            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 108
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        28: .line 109
            aload 3 /* is */
            ifnull 34
        29: .line 111
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        30: .line 112
            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 113
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 34
        33: .line 114
            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 118
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        35: .line 109
      StackMap locals: int int java.io.File java.io.InputStream
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        36: .line 111
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        37: .line 112
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        38: pop
        39: .line 113
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        40: .line 114
            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 121
      StackMap locals:
      StackMap stack:
            ldc "true"
            getstatic java.security.Security.props:Ljava/util/Properties;
        42: .line 122
            ldc "security.overridePropertiesFile"
        43: .line 121
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        44: .line 122
            ifeq 106
        45: .line 125
            ldc "java.security.properties"
        46: .line 124
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        start local 3 // java.lang.String extraPropFile
        47: .line 126
            aload 3 /* extraPropFile */
            ifnull 50
            aload 3 /* extraPropFile */
            ldc "="
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 50
        48: .line 127
            iconst_1
            istore 1 /* overrideAll */
        49: .line 128
            aload 3 /* extraPropFile */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* extraPropFile */
        50: .line 131
      StackMap locals: java.lang.String
      StackMap stack:
            iload 1 /* overrideAll */
            ifeq 56
        51: .line 132
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
        52: .line 133
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 56
        53: .line 134
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        54: .line 135
            ldc "overriding other security properties files!"
        55: .line 134
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        56: .line 141
      StackMap locals:
      StackMap stack:
            aload 3 /* extraPropFile */
            ifnull 106
        57: .line 142
            aconst_null
            astore 4 /* bis */
        start local 4 // java.io.BufferedInputStream bis
        58: .line 146
            aload 3 /* extraPropFile */
            invokestatic sun.security.util.PropertyExpander.expand:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        59: .line 147
            new java.io.File
            dup
            aload 3 /* extraPropFile */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* propFile */
        60: .line 148
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 65
        61: .line 149
            new java.net.URL
            dup
        62: .line 150
            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 149
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 5 /* propURL */
        start local 5 // java.net.URL propURL
        64: .line 151
            goto 66
        end local 5 // java.net.URL propURL
        65: .line 152
      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 154
      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 155
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 4 /* bis */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        68: .line 156
            iconst_1
            istore 0 /* loadedProps */
        69: .line 158
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 100
        70: .line 159
            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 160
            aload 5 /* propURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        72: .line 159
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        73: .line 161
            iload 1 /* overrideAll */
            ifeq 100
        74: .line 162
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        75: .line 163
            ldc "overriding other security properties files!"
        76: .line 162
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 5 // java.net.URL propURL
        77: .line 166
            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 167
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 86
        80: .line 168
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        81: .line 169
            new java.lang.StringBuilder
            dup
            ldc "unable to load security properties from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        82: .line 170
            aload 3 /* extraPropFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        83: .line 169
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        84: .line 168
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        85: .line 171
            aload 5 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 5 // java.lang.Exception e
        86: .line 174
      StackMap locals:
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
        87: .line 176
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        88: .line 177
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
        89: pop
        90: .line 178
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
        91: .line 179
            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 173
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        93: .line 174
            aload 4 /* bis */
            ifnull 99
        94: .line 176
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        95: .line 177
            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 178
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 99
        98: .line 179
            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 183
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
       100: .line 174
      StackMap locals: int int java.io.File java.lang.String java.io.BufferedInputStream
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
       101: .line 176
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
       102: .line 177
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
       103: pop
       104: .line 178
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
       105: .line 179
            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 187
      StackMap locals:
      StackMap stack:
            iload 0 /* loadedProps */
            ifne 110
       107: .line 188
            invokestatic java.security.Security.initializeStatic:()V
       108: .line 189
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 110
       109: .line 190
            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 195
      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 202
            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 203
            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 204
            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 205
            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 206
            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 207
            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 208
            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 213
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 214
            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 219
            getstatic java.io.File.separator:Ljava/lang/String;
            astore 1 /* sep */
        start local 1 // java.lang.String sep
         1: .line 220
            new java.io.File
            dup
            new java.lang.StringBuilder
            dup
            invokestatic jdk.internal.util.StaticProperty.javaHome:()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 "conf"
            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 221
            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 220
            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 232
            aconst_null
            astore 1 /* entry */
        start local 1 // java.security.Security$ProviderProperty entry
         1: .line 234
            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 235
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 21
         4: .line 237
      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 238
            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 239
            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 241
            aload 6 /* prop */
            ifnonnull 15
         8: .line 244
            aload 5 /* prov */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 7 /* e */
        start local 7 // java.util.Enumeration e
         9: .line 245
            goto 14
        10: .line 246
      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 247
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 248
            aload 5 /* prov */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* prop */
        13: .line 249
            goto 15
        14: .line 245
      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 254
      StackMap locals:
      StackMap stack:
            aload 6 /* prop */
            ifnull 20
        16: .line 255
            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 256
            aload 7 /* newEntry */
            aload 6 /* prop */
            putfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
        18: .line 257
            aload 7 /* newEntry */
            aload 5 /* prov */
            putfield java.security.Security$ProviderProperty.provider:Ljava/security/Provider;
        19: .line 258
            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 235
      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 262
            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 269
            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 270
            aload 2 /* prop */
            ifnonnull 9
         2: .line 273
            aload 1 /* provider */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         3: .line 274
            goto 8
         4: .line 275
      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 276
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 277
            aload 1 /* provider */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* prop */
         7: .line 278
            goto 9
        end local 4 // java.lang.String matchKey
         8: .line 274
      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 282
      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 312
            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 313
            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 312
            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 314
            aload 2 /* entry */
            ifnull 5
         4: .line 315
            aload 2 /* entry */
            getfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
            areturn
         5: .line 317
      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()
    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 363
            aload 0 /* provider */
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            astore 2 /* providerName */
        start local 2 // java.lang.String providerName
         1: .line 364
            aload 2 /* providerName */
            invokestatic java.security.Security.checkInsertProvider:(Ljava/lang/String;)V
         2: .line 365
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 3 /* list */
        start local 3 // sun.security.jca.ProviderList list
         3: .line 366
            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 367
            aload 3 /* list */
            aload 4 /* newList */
            if_acmpne 6
         5: .line 368
            iconst_m1
            ireturn
         6: .line 370
      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 371
            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 408
            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 444
            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 445
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 1 /* list */
        start local 1 // sun.security.jca.ProviderList list
         2: .line 446
            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 447
            aload 2 /* newList */
            invokestatic sun.security.jca.Providers.setProviderList:(Lsun/security/jca/ProviderList;)V
         4: .line 448
            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 457
            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 473
            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 537
            aconst_null
            astore 1 /* key */
        start local 1 // java.lang.String key
         1: .line 538
            aconst_null
            astore 2 /* value */
        start local 2 // java.lang.String value
         2: .line 539
            aload 0 /* filter */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            istore 3 /* index */
        start local 3 // int index
         3: .line 541
            iload 3 /* index */
            iconst_m1
            if_icmpne 7
         4: .line 542
            aload 0 /* filter */
            astore 1 /* key */
         5: .line 543
            ldc ""
            astore 2 /* value */
         6: .line 544
            goto 9
         7: .line 545
      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 546
            aload 0 /* filter */
            iload 3 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* value */
         9: .line 549
      StackMap locals:
      StackMap stack:
            new java.util.Hashtable
            dup
            iconst_1
            invokespecial java.util.Hashtable.<init>:(I)V
            astore 4 /* hashtableFilter */
        start local 4 // java.util.Hashtable hashtableFilter
        10: .line 550
            aload 4 /* hashtableFilter */
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 552
            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   12     0           filter  Ljava/lang/String;
            1   12     1              key  Ljava/lang/String;
            2   12     2            value  Ljava/lang/String;
            3   12     3            index  I
           10   12     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 610
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 1 /* allProviders */
        start local 1 // java.security.Provider[] allProviders
         1: .line 611
            aload 0 /* filter */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 2 /* keySet */
        start local 2 // java.util.Set keySet
         2: .line 612
            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 616
            aload 2 /* keySet */
            ifnull 4
            aload 1 /* allProviders */
            ifnonnull 5
         4: .line 617
      StackMap locals: java.security.Provider[] java.util.Set java.util.LinkedHashSet
      StackMap stack:
            aload 1 /* allProviders */
            areturn
         5: .line 620
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 4 /* firstSearch */
        start local 4 // boolean firstSearch
         6: .line 624
            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 625
      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 626
            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 628
            aload 6 /* key */
            aload 7 /* value */
        11: .line 629
            aload 1 /* allProviders */
        12: .line 628
            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 630
            iload 4 /* firstSearch */
            ifeq 16
        14: .line 631
            aload 8 /* newCandidates */
            astore 3 /* candidates */
        15: .line 632
            iconst_0
            istore 4 /* firstSearch */
        16: .line 635
      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 639
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.iterator:()Ljava/util/Iterator;
            astore 9 /* cansIte */
        start local 9 // java.util.Iterator cansIte
        18: .line 640
            goto 22
        19: .line 641
      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 642
            aload 8 /* newCandidates */
            aload 10 /* prov */
            invokevirtual java.util.LinkedHashSet.contains:(Ljava/lang/Object;)Z
            ifne 22
        21: .line 643
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.remove:()V
        end local 10 // java.security.Provider prov
        22: .line 640
      StackMap locals:
      StackMap stack:
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        end local 9 // java.util.Iterator cansIte
        23: .line 646
            goto 26
        24: .line 647
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* candidates */
        25: .line 648
            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 624
      StackMap locals:
      StackMap stack:
            aload 5 /* ite */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 5 // java.util.Iterator ite
        27: .line 652
      StackMap locals:
      StackMap stack:
            aload 3 /* candidates */
            ifnull 28
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.isEmpty:()Z
            ifeq 29
        28: .line 653
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        29: .line 655
      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 656
            aload 5 /* candidatesArray */
            arraylength
            anewarray java.security.Provider
            astore 6 /* result */
        start local 6 // java.security.Provider[] result
        31: .line 658
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        32: goto 35
        33: .line 659
      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 658
            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 662
            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=4, locals=3, args_size=1
        start local 0 // java.lang.String type
         0: .line 675
            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 676
            aload 1 /* clazz */
            ifnull 3
         2: .line 677
            aload 1 /* clazz */
            areturn
         3: .line 680
      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 681
            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 682
            aload 1 /* clazz */
         6: areturn
         7: .line 683
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* e */
        start local 2 // java.lang.ClassNotFoundException e
         8: .line 684
            new java.lang.AssertionError
            dup
            ldc "Spi class not found"
            aload 2 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            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 698
            aload 2 /* provider */
            ifnonnull 5
         1: .line 700
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
         2: .line 699
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         3: .line 700
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         4: .line 699
            areturn
         5: .line 703
      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 702
            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 703
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         8: .line 702
            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 710
            aload 2 /* provider */
            ifnonnull 5
         1: .line 712
            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 711
            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 712
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         4: .line 711
            areturn
         5: .line 715
      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 714
            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 715
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         8: .line 714
            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 729
            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 728
            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 729
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         3: .line 728
            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 736
            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 735
            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 736
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         3: .line 735
            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 763
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sm */
        start local 1 // java.lang.SecurityManager sm
         1: .line 764
            aload 1 /* sm */
            ifnull 5
         2: .line 765
            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 766
            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 765
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         5: .line 768
      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 769
            aload 2 /* name */
            ifnull 8
         7: .line 770
            aload 2 /* name */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* name */
         8: .line 771
      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=3, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.lang.String datum
         0: .line 797
            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 798
            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 799
            aload 0 /* key */
            invokestatic java.security.Security.invalidateSMCache:(Ljava/lang/String;)V
         3: .line 801
            new jdk.internal.event.SecurityPropertyModificationEvent
            dup
            invokespecial jdk.internal.event.SecurityPropertyModificationEvent.<init>:()V
            astore 2 /* spe */
        start local 2 // jdk.internal.event.SecurityPropertyModificationEvent spe
         4: .line 803
            aload 2 /* spe */
            aload 0 /* key */
            putfield jdk.internal.event.SecurityPropertyModificationEvent.key:Ljava/lang/String;
         5: .line 804
            aload 2 /* spe */
            aload 1 /* datum */
            putfield jdk.internal.event.SecurityPropertyModificationEvent.value:Ljava/lang/String;
         6: .line 805
            aload 2 /* spe */
            invokevirtual jdk.internal.event.SecurityPropertyModificationEvent.commit:()V
         7: .line 807
            invokestatic jdk.internal.event.EventHelper.isLoggingSecurity:()Z
            ifeq 9
         8: .line 808
            aload 0 /* key */
            aload 1 /* datum */
            invokestatic jdk.internal.event.EventHelper.logSecurityPropertyEvent:(Ljava/lang/String;Ljava/lang/String;)V
         9: .line 810
      StackMap locals: jdk.internal.event.SecurityPropertyModificationEvent
      StackMap stack:
            return
        end local 2 // jdk.internal.event.SecurityPropertyModificationEvent spe
        end local 1 // java.lang.String datum
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0    key  Ljava/lang/String;
            0   10     1  datum  Ljava/lang/String;
            4   10     2    spe  Ljdk/internal/event/SecurityPropertyModificationEvent;
    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=2, locals=3, args_size=1
        start local 0 // java.lang.String key
         0: .line 821
            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 822
            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 824
            iload 1 /* pa */
            ifne 3
            iload 2 /* pd */
            ifeq 4
         3: .line 825
      StackMap locals: int int
      StackMap stack:
            invokestatic jdk.internal.misc.SharedSecrets.getJavaLangAccess:()Ljdk/internal/misc/JavaLangAccess;
            invokeinterface jdk.internal.misc.JavaLangAccess.invalidatePackageAccessCache:()V
         4: .line 827
      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 830
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* security */
        start local 1 // java.lang.SecurityManager security
         1: .line 831
            aload 1 /* security */
            ifnull 3
         2: .line 832
            aload 1 /* security */
            aload 0 /* directive */
            invokevirtual java.lang.SecurityManager.checkSecurityAccess:(Ljava/lang/String;)V
         3: .line 834
      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 void checkInsertProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.lang.String name
         0: .line 837
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* security */
        start local 1 // java.lang.SecurityManager security
         1: .line 838
            aload 1 /* security */
            ifnull 10
         2: .line 840
            aload 1 /* security */
            ldc "insertProvider"
            invokevirtual java.lang.SecurityManager.checkSecurityAccess:(Ljava/lang/String;)V
         3: .line 841
            goto 10
      StackMap locals: java.lang.String java.lang.SecurityManager
      StackMap stack: java.lang.SecurityException
         4: astore 2 /* se1 */
        start local 2 // java.lang.SecurityException se1
         5: .line 843
            aload 1 /* security */
            new java.lang.StringBuilder
            dup
            ldc "insertProvider."
            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;
            invokevirtual java.lang.SecurityManager.checkSecurityAccess:(Ljava/lang/String;)V
         6: .line 844
            goto 10
      StackMap locals: java.lang.String java.lang.SecurityManager java.lang.SecurityException
      StackMap stack: java.lang.SecurityException
         7: astore 3 /* se2 */
        start local 3 // java.lang.SecurityException se2
         8: .line 846
            aload 2 /* se1 */
            aload 3 /* se2 */
            invokevirtual java.lang.SecurityException.addSuppressed:(Ljava/lang/Throwable;)V
         9: .line 847
            aload 2 /* se1 */
            athrow
        end local 3 // java.lang.SecurityException se2
        end local 2 // java.lang.SecurityException se1
        10: .line 851
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.SecurityManager security
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      name  Ljava/lang/String;
            1   11     1  security  Ljava/lang/SecurityManager;
            5   10     2       se1  Ljava/lang/SecurityException;
            8   10     3       se2  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.SecurityException
           5     6       7  Class java.lang.SecurityException
    MethodParameters:
      Name  Flags
      name  

  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 861
            aload 0 /* filterKey */
         1: .line 862
            aload 1 /* filterValue */
         2: .line 861
            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 867
            aload 3 /* filterComponents */
            iconst_0
            aaload
            astore 4 /* serviceName */
        start local 4 // java.lang.String serviceName
         4: .line 868
            aload 3 /* filterComponents */
            iconst_1
            aaload
            astore 5 /* algName */
        start local 5 // java.lang.String algName
         5: .line 869
            aload 3 /* filterComponents */
            iconst_2
            aaload
            astore 6 /* attrName */
        start local 6 // java.lang.String attrName
         6: .line 871
            aload 4 /* serviceName */
            aload 5 /* algName */
            aload 6 /* attrName */
         7: .line 872
            aload 1 /* filterValue */
            aload 2 /* allProviders */
         8: .line 871
            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 881
            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 882
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         2: goto 10
         3: .line 883
      StackMap locals: java.util.LinkedHashSet int
      StackMap stack:
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            aload 0 /* serviceName */
         4: .line 884
            aload 1 /* algName */
         5: .line 885
            aload 2 /* attrName */
            aload 3 /* filterValue */
         6: .line 883
            invokestatic java.security.Security.isCriterionSatisfied:(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
         7: .line 885
            ifeq 9
         8: .line 886
            aload 5 /* candidates */
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            invokevirtual java.util.LinkedHashSet.add:(Ljava/lang/Object;)Z
            pop
         9: .line 882
      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 889
            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 901
            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 903
            aload 3 /* attrName */
            ifnull 3
         2: .line 904
            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 908
      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 910
            aload 6 /* propValue */
            ifnonnull 18
         5: .line 913
            new java.lang.StringBuilder
            dup
            ldc "Alg.Alias."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 914
            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 915
            aload 2 /* algName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 913
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 916
            aload 0 /* prov */
        10: .line 913
            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 917
            aload 7 /* standardName */
            ifnull 16
        12: .line 918
            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 920
            aload 3 /* attrName */
            ifnull 15
        14: .line 921
            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 924
      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 927
      StackMap locals:
      StackMap stack:
            aload 6 /* propValue */
            ifnonnull 18
        17: .line 930
            iconst_0
            ireturn
        end local 7 // java.lang.String standardName
        18: .line 938
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            ifnonnull 20
        19: .line 939
            iconst_1
            ireturn
        20: .line 944
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            invokestatic java.security.Security.isStandardAttr:(Ljava/lang/String;)Z
            ifeq 22
        21: .line 945
            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 947
      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 958
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 959
            iconst_1
            ireturn
         2: .line 961
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 962
            iconst_1
            ireturn
         4: .line 964
      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 976
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 6
         1: .line 977
            aload 1 /* value */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* requestedSize */
        start local 3 // int requestedSize
         2: .line 978
            aload 2 /* prop */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 4 /* maxSize */
        start local 4 // int maxSize
         3: .line 979
            iload 3 /* requestedSize */
            iload 4 /* maxSize */
            if_icmpgt 5
         4: .line 980
            iconst_1
            ireturn
         5: .line 982
      StackMap locals: int int
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // int maxSize
        end local 3 // int requestedSize
         6: .line 988
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 989
            aload 1 /* value */
            aload 2 /* prop */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
         8: .line 992
      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 996
            aload 0 /* filterKey */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 2 /* algIndex */
        start local 2 // int algIndex
         1: .line 998
            iload 2 /* algIndex */
            ifge 3
         2: .line 1001
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 1004
      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 1005
            aconst_null
            astore 4 /* algName */
        start local 4 // java.lang.String algName
         5: .line 1006
            aconst_null
            astore 5 /* attrName */
        start local 5 // java.lang.String attrName
         6: .line 1008
            aload 1 /* filterValue */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 10
         7: .line 1011
            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 1012
            aload 4 /* algName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 20
         9: .line 1014
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1020
      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 1022
            iload 6 /* attrIndex */
            iconst_m1
            if_icmpne 13
        12: .line 1024
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 1026
      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 1027
            aload 5 /* attrName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 16
        15: .line 1029
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 1034
      StackMap locals:
      StackMap stack:
            iload 6 /* attrIndex */
            iload 2 /* algIndex */
            if_icmplt 18
        17: .line 1035
            iload 2 /* algIndex */
            iload 6 /* attrIndex */
            iconst_1
            isub
            if_icmpne 19
        18: .line 1036
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 1038
      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 1042
      StackMap locals:
      StackMap stack:
            iconst_3
            anewarray java.lang.String
            astore 6 /* result */
        start local 6 // java.lang.String[] result
        21: .line 1043
            aload 6 /* result */
            iconst_0
            aload 3 /* serviceName */
            aastore
        22: .line 1044
            aload 6 /* result */
            iconst_1
            aload 4 /* algName */
            aastore
        23: .line 1045
            aload 6 /* result */
            iconst_2
            aload 5 /* attrName */
            aastore
        24: .line 1047
            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 1073
            aload 0 /* serviceName */
            ifnull 2
            aload 0 /* serviceName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 2
         1: .line 1074
            aload 0 /* serviceName */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 1075
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            areturn
         3: .line 1078
      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 1079
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 2 /* providers */
        start local 2 // java.security.Provider[] providers
         5: .line 1081
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 21
         7: .line 1083
      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 1084
            goto 19
         9: .line 1086
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
        10: .line 1085
            astore 5 /* currentKey */
        start local 5 // java.lang.String currentKey
        11: .line 1087
            aload 5 /* currentKey */
        12: .line 1088
            aload 0 /* serviceName */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
        13: .line 1087
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
        14: .line 1088
            ifeq 19
        15: .line 1095
            aload 5 /* currentKey */
            bipush 32
            invokevirtual java.lang.String.indexOf:(I)I
            ifge 19
        16: .line 1096
            aload 1 /* result */
            aload 5 /* currentKey */
        17: .line 1097
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
        18: .line 1096
            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
        19: .line 1084
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 9
        end local 4 // java.util.Enumeration e
        20: .line 1081
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 3 /* i */
            aload 2 /* providers */
            arraylength
            if_icmplt 7
        end local 3 // int i
        22: .line 1102
            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   23     0  serviceName  Ljava/lang/String;
            4   23     1       result  Ljava/util/HashSet<Ljava/lang/String;>;
            5   23     2    providers  [Ljava/security/Provider;
            6   22     3            i  I
            8   20     4            e  Ljava/util/Enumeration<Ljava/lang/Object;>;
           11   19     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$ProviderProperty
InnerClasses:
  java.security.Security$1
  private ProviderProperty = java.security.Security$ProviderProperty of java.security.Security
  public final Instance = sun.security.jca.GetInstance$Instance of sun.security.jca.GetInstance