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 53
            ldc "properties"
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
         1: .line 52
            putstatic java.security.Security.sdebug:Lsun/security/util/Debug;
         2: .line 69
            new java.security.Security$1
            dup
            invokespecial java.security.Security$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         3: .line 662
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
         4: .line 661
            putstatic java.security.Security.spiMap:Ljava/util/Map;
         5: .line 662
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void initialize();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=0
         0: .line 78
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
         1: .line 79
            iconst_0
            istore 0 /* loadedProps */
        start local 0 // boolean loadedProps
         2: .line 80
            iconst_0
            istore 1 /* overrideAll */
        start local 1 // boolean overrideAll
         3: .line 84
            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 85
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 41
         5: .line 86
            aconst_null
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         6: .line 88
            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 89
            new java.io.BufferedInputStream
            dup
            aload 4 /* fis */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 3 /* is */
         8: .line 90
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 3 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         9: .line 91
            iconst_1
            istore 0 /* loadedProps */
        10: .line 93
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 35
        11: .line 94
            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 95
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 94
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // java.io.FileInputStream fis
        14: .line 97
            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 98
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 21
        17: .line 99
            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 100
            aload 2 /* propFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 99
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        20: .line 101
            aload 4 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 4 // java.io.IOException e
        21: .line 104
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        22: .line 106
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        23: .line 107
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 108
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        26: .line 109
            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 103
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        28: .line 104
            aload 3 /* is */
            ifnull 34
        29: .line 106
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        30: .line 107
            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 108
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 34
        33: .line 109
            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 113
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        35: .line 104
      StackMap locals: int int java.io.File java.io.InputStream
      StackMap stack:
            aload 3 /* is */
            ifnull 41
        36: .line 106
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        37: .line 107
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        38: pop
        39: .line 108
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 41
        40: .line 109
            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 116
      StackMap locals:
      StackMap stack:
            ldc "true"
            getstatic java.security.Security.props:Ljava/util/Properties;
        42: .line 117
            ldc "security.overridePropertiesFile"
        43: .line 116
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        44: .line 117
            ifeq 106
        45: .line 120
            ldc "java.security.properties"
        46: .line 119
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        start local 3 // java.lang.String extraPropFile
        47: .line 121
            aload 3 /* extraPropFile */
            ifnull 50
            aload 3 /* extraPropFile */
            ldc "="
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 50
        48: .line 122
            iconst_1
            istore 1 /* overrideAll */
        49: .line 123
            aload 3 /* extraPropFile */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* extraPropFile */
        50: .line 126
      StackMap locals: java.lang.String
      StackMap stack:
            iload 1 /* overrideAll */
            ifeq 56
        51: .line 127
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic java.security.Security.props:Ljava/util/Properties;
        52: .line 128
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 56
        53: .line 129
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        54: .line 130
            ldc "overriding other security properties files!"
        55: .line 129
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        56: .line 136
      StackMap locals:
      StackMap stack:
            aload 3 /* extraPropFile */
            ifnull 106
        57: .line 137
            aconst_null
            astore 4 /* bis */
        start local 4 // java.io.BufferedInputStream bis
        58: .line 141
            aload 3 /* extraPropFile */
            invokestatic sun.security.util.PropertyExpander.expand:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* extraPropFile */
        59: .line 142
            new java.io.File
            dup
            aload 3 /* extraPropFile */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* propFile */
        60: .line 143
            aload 2 /* propFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 65
        61: .line 144
            new java.net.URL
            dup
        62: .line 145
            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 144
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 5 /* propURL */
        start local 5 // java.net.URL propURL
        64: .line 146
            goto 66
        end local 5 // java.net.URL propURL
        65: .line 147
      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 149
      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 150
            getstatic java.security.Security.props:Ljava/util/Properties;
            aload 4 /* bis */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        68: .line 151
            iconst_1
            istore 0 /* loadedProps */
        69: .line 153
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 100
        70: .line 154
            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 155
            aload 5 /* propURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        72: .line 154
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        73: .line 156
            iload 1 /* overrideAll */
            ifeq 100
        74: .line 157
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        75: .line 158
            ldc "overriding other security properties files!"
        76: .line 157
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 5 // java.net.URL propURL
        77: .line 161
            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 162
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 86
        80: .line 163
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
        81: .line 164
            new java.lang.StringBuilder
            dup
            ldc "unable to load security properties from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        82: .line 165
            aload 3 /* extraPropFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        83: .line 164
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        84: .line 163
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        85: .line 166
            aload 5 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 5 // java.lang.Exception e
        86: .line 169
      StackMap locals:
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
        87: .line 171
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        88: .line 172
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
        89: pop
        90: .line 173
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
        91: .line 174
            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 168
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        93: .line 169
            aload 4 /* bis */
            ifnull 99
        94: .line 171
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
        95: .line 172
            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 173
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 99
        98: .line 174
            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 178
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
       100: .line 169
      StackMap locals: int int java.io.File java.lang.String java.io.BufferedInputStream
      StackMap stack:
            aload 4 /* bis */
            ifnull 106
       101: .line 171
            aload 4 /* bis */
            invokevirtual java.io.BufferedInputStream.close:()V
       102: .line 172
            goto 106
      StackMap locals:
      StackMap stack: java.io.IOException
       103: pop
       104: .line 173
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 106
       105: .line 174
            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 182
      StackMap locals:
      StackMap stack:
            iload 0 /* loadedProps */
            ifne 110
       107: .line 183
            invokestatic java.security.Security.initializeStatic:()V
       108: .line 184
            getstatic java.security.Security.sdebug:Lsun/security/util/Debug;
            ifnull 110
       109: .line 185
            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 190
      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 197
            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 198
            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 199
            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 200
            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 201
            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 202
            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 203
            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 208
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 209
            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 214
            getstatic java.io.File.separator:Ljava/lang/String;
            astore 1 /* sep */
        start local 1 // java.lang.String sep
         1: .line 215
            new java.io.File
            dup
            new java.lang.StringBuilder
            dup
            ldc "java.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "lib"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 216
            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 215
            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 227
            aconst_null
            astore 1 /* entry */
        start local 1 // java.security.Security$ProviderProperty entry
         1: .line 229
            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 230
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 21
         4: .line 232
      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 233
            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 234
            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 236
            aload 6 /* prop */
            ifnonnull 15
         8: .line 239
            aload 5 /* prov */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 7 /* e */
        start local 7 // java.util.Enumeration e
         9: .line 240
            goto 14
        10: .line 241
      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 242
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 243
            aload 5 /* prov */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* prop */
        13: .line 244
            goto 15
        14: .line 240
      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 249
      StackMap locals:
      StackMap stack:
            aload 6 /* prop */
            ifnull 20
        16: .line 250
            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 251
            aload 7 /* newEntry */
            aload 6 /* prop */
            putfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
        18: .line 252
            aload 7 /* newEntry */
            aload 5 /* prov */
            putfield java.security.Security$ProviderProperty.provider:Ljava/security/Provider;
        19: .line 253
            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 230
      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 257
            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 264
            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 265
            aload 2 /* prop */
            ifnonnull 9
         2: .line 268
            aload 1 /* provider */
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         3: .line 269
            goto 8
         4: .line 270
      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 271
            aload 0 /* key */
            aload 4 /* matchKey */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 272
            aload 1 /* provider */
            aload 4 /* matchKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* prop */
         7: .line 273
            goto 9
        end local 4 // java.lang.String matchKey
         8: .line 269
      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 277
      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 307
            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 308
            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 307
            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 309
            aload 2 /* entry */
            ifnull 5
         4: .line 310
            aload 2 /* entry */
            getfield java.security.Security$ProviderProperty.className:Ljava/lang/String;
            areturn
         5: .line 312
      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 358
            aload 0 /* provider */
            invokevirtual java.security.Provider.getName:()Ljava/lang/String;
            astore 2 /* providerName */
        start local 2 // java.lang.String providerName
         1: .line 359
            aload 2 /* providerName */
            invokestatic java.security.Security.checkInsertProvider:(Ljava/lang/String;)V
         2: .line 360
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 3 /* list */
        start local 3 // sun.security.jca.ProviderList list
         3: .line 361
            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 362
            aload 3 /* list */
            aload 4 /* newList */
            if_acmpne 6
         5: .line 363
            iconst_m1
            ireturn
         6: .line 365
      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 366
            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 403
            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 439
            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 440
            invokestatic sun.security.jca.Providers.getFullProviderList:()Lsun/security/jca/ProviderList;
            astore 1 /* list */
        start local 1 // sun.security.jca.ProviderList list
         2: .line 441
            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 442
            aload 2 /* newList */
            invokestatic sun.security.jca.Providers.setProviderList:(Lsun/security/jca/ProviderList;)V
         4: .line 443
            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 452
            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 468
            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 532
            aconst_null
            astore 1 /* key */
        start local 1 // java.lang.String key
         1: .line 533
            aconst_null
            astore 2 /* value */
        start local 2 // java.lang.String value
         2: .line 534
            aload 0 /* filter */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            istore 3 /* index */
        start local 3 // int index
         3: .line 536
            iload 3 /* index */
            iconst_m1
            if_icmpne 7
         4: .line 537
            aload 0 /* filter */
            astore 1 /* key */
         5: .line 538
            ldc ""
            astore 2 /* value */
         6: .line 539
            goto 9
         7: .line 540
      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 541
            aload 0 /* filter */
            iload 3 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* value */
         9: .line 544
      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 545
            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 547
            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 605
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 1 /* allProviders */
        start local 1 // java.security.Provider[] allProviders
         1: .line 606
            aload 0 /* filter */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 2 /* keySet */
        start local 2 // java.util.Set keySet
         2: .line 607
            new java.util.LinkedHashSet
            dup
            iconst_5
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 3 /* candidates */
        start local 3 // java.util.LinkedHashSet candidates
         3: .line 611
            aload 2 /* keySet */
            ifnull 4
            aload 1 /* allProviders */
            ifnonnull 5
         4: .line 612
      StackMap locals: java.security.Provider[] java.util.Set java.util.LinkedHashSet
      StackMap stack:
            aload 1 /* allProviders */
            areturn
         5: .line 615
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 4 /* firstSearch */
        start local 4 // boolean firstSearch
         6: .line 619
            aload 2 /* keySet */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5 /* ite */
        start local 5 // java.util.Iterator ite
         7: goto 26
         8: .line 620
      StackMap locals: int java.util.Iterator
      StackMap stack:
            aload 5 /* ite */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* key */
        start local 6 // java.lang.String key
         9: .line 621
            aload 0 /* filter */
            aload 6 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* value */
        start local 7 // java.lang.String value
        10: .line 623
            aload 6 /* key */
            aload 7 /* value */
        11: .line 624
            aload 1 /* allProviders */
        12: .line 623
            invokestatic java.security.Security.getAllQualifyingCandidates:(Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
            astore 8 /* newCandidates */
        start local 8 // java.util.LinkedHashSet newCandidates
        13: .line 625
            iload 4 /* firstSearch */
            ifeq 16
        14: .line 626
            aload 8 /* newCandidates */
            astore 3 /* candidates */
        15: .line 627
            iconst_0
            istore 4 /* firstSearch */
        16: .line 630
      StackMap locals: java.lang.String java.lang.String java.util.LinkedHashSet
      StackMap stack:
            aload 8 /* newCandidates */
            ifnull 24
            aload 8 /* newCandidates */
            invokevirtual java.util.LinkedHashSet.isEmpty:()Z
            ifne 24
        17: .line 634
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.iterator:()Ljava/util/Iterator;
            astore 9 /* cansIte */
        start local 9 // java.util.Iterator cansIte
        18: .line 635
            goto 22
        19: .line 636
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.Provider
            astore 10 /* prov */
        start local 10 // java.security.Provider prov
        20: .line 637
            aload 8 /* newCandidates */
            aload 10 /* prov */
            invokevirtual java.util.LinkedHashSet.contains:(Ljava/lang/Object;)Z
            ifne 22
        21: .line 638
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.remove:()V
        end local 10 // java.security.Provider prov
        22: .line 635
      StackMap locals:
      StackMap stack:
            aload 9 /* cansIte */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        end local 9 // java.util.Iterator cansIte
        23: .line 641
            goto 26
        24: .line 642
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* candidates */
        25: .line 643
            goto 27
        end local 8 // java.util.LinkedHashSet newCandidates
        end local 7 // java.lang.String value
        end local 6 // java.lang.String key
        26: .line 619
      StackMap locals:
      StackMap stack:
            aload 5 /* ite */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 5 // java.util.Iterator ite
        27: .line 647
      StackMap locals:
      StackMap stack:
            aload 3 /* candidates */
            ifnull 28
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.isEmpty:()Z
            ifeq 29
        28: .line 648
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        29: .line 650
      StackMap locals:
      StackMap stack:
            aload 3 /* candidates */
            invokevirtual java.util.LinkedHashSet.toArray:()[Ljava/lang/Object;
            astore 5 /* candidatesArray */
        start local 5 // java.lang.Object[] candidatesArray
        30: .line 651
            aload 5 /* candidatesArray */
            arraylength
            anewarray java.security.Provider
            astore 6 /* result */
        start local 6 // java.security.Provider[] result
        31: .line 653
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        32: goto 35
        33: .line 654
      StackMap locals: java.lang.Object[] java.security.Provider[] int
      StackMap stack:
            aload 6 /* result */
            iload 7 /* i */
            aload 5 /* candidatesArray */
            iload 7 /* i */
            aaload
            checkcast java.security.Provider
            aastore
        34: .line 653
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 7 /* i */
            aload 6 /* result */
            arraylength
            if_icmplt 33
        end local 7 // int i
        36: .line 657
            aload 6 /* result */
            areturn
        end local 6 // java.security.Provider[] result
        end local 5 // java.lang.Object[] candidatesArray
        end local 4 // boolean firstSearch
        end local 3 // java.util.LinkedHashSet candidates
        end local 2 // java.util.Set keySet
        end local 1 // java.security.Provider[] allProviders
        end local 0 // java.util.Map filter
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   37     0           filter  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   37     1     allProviders  [Ljava/security/Provider;
            2   37     2           keySet  Ljava/util/Set<Ljava/lang/String;>;
            3   37     3       candidates  Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
            6   37     4      firstSearch  Z
            7   27     5              ite  Ljava/util/Iterator<Ljava/lang/String;>;
            9   26     6              key  Ljava/lang/String;
           10   26     7            value  Ljava/lang/String;
           13   26     8    newCandidates  Ljava/util/LinkedHashSet<Ljava/security/Provider;>;
           18   23     9          cansIte  Ljava/util/Iterator<Ljava/security/Provider;>;
           20   22    10             prov  Ljava/security/Provider;
           30   37     5  candidatesArray  [Ljava/lang/Object;
           31   37     6           result  [Ljava/security/Provider;
           32   36     7                i  I
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)[Ljava/security/Provider;
    MethodParameters:
        Name  Flags
      filter  

  private static java.lang.Class<?> getSpiClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.lang.String type
         0: .line 670
            getstatic java.security.Security.spiMap:Ljava/util/Map;
            aload 0 /* type */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 1 /* clazz */
        start local 1 // java.lang.Class clazz
         1: .line 671
            aload 1 /* clazz */
            ifnull 3
         2: .line 672
            aload 1 /* clazz */
            areturn
         3: .line 675
      StackMap locals: java.lang.Class
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "java.security."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Spi"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 1 /* clazz */
         4: .line 676
            getstatic java.security.Security.spiMap:Ljava/util/Map;
            aload 0 /* type */
            aload 1 /* clazz */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 677
            aload 1 /* clazz */
         6: areturn
         7: .line 678
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* e */
        start local 2 // java.lang.ClassNotFoundException e
         8: .line 679
            new java.lang.AssertionError
            dup
            ldc "Spi class not found"
            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 693
            aload 2 /* provider */
            ifnonnull 5
         1: .line 695
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
         2: .line 694
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         3: .line 695
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         4: .line 694
            areturn
         5: .line 698
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            aload 1 /* type */
            invokestatic java.security.Security.getSpiClass:(Ljava/lang/String;)Ljava/lang/Class;
            aload 0 /* algorithm */
            aload 2 /* provider */
         6: .line 697
            invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
         7: .line 698
            invokevirtual sun.security.jca.GetInstance$Instance.toArray:()[Ljava/lang/Object;
         8: .line 697
            areturn
        end local 2 // java.lang.String provider
        end local 1 // java.lang.String type
        end local 0 // java.lang.String algorithm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  algorithm  Ljava/lang/String;
            0    9     1       type  Ljava/lang/String;
            0    9     2   provider  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
    MethodParameters:
           Name  Flags
      algorithm  
      type       
      provider   

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

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

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

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

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

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

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

  private static 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 859
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* security */
        start local 1 // java.lang.SecurityManager security
         1: .line 860
            aload 1 /* security */
            ifnull 10
         2: .line 862
            aload 1 /* security */
            ldc "insertProvider"
            invokevirtual java.lang.SecurityManager.checkSecurityAccess:(Ljava/lang/String;)V
         3: .line 863
            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 865
            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 866
            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 868
            aload 2 /* se1 */
            aload 3 /* se2 */
            invokevirtual java.lang.SecurityException.addSuppressed:(Ljava/lang/Throwable;)V
         9: .line 869
            aload 2 /* se1 */
            athrow
        end local 3 // java.lang.SecurityException se2
        end local 2 // java.lang.SecurityException se1
        10: .line 873
      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 883
            aload 0 /* filterKey */
         1: .line 884
            aload 1 /* filterValue */
         2: .line 883
            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 889
            aload 3 /* filterComponents */
            iconst_0
            aaload
            astore 4 /* serviceName */
        start local 4 // java.lang.String serviceName
         4: .line 890
            aload 3 /* filterComponents */
            iconst_1
            aaload
            astore 5 /* algName */
        start local 5 // java.lang.String algName
         5: .line 891
            aload 3 /* filterComponents */
            iconst_2
            aaload
            astore 6 /* attrName */
        start local 6 // java.lang.String attrName
         6: .line 893
            aload 4 /* serviceName */
            aload 5 /* algName */
            aload 6 /* attrName */
         7: .line 894
            aload 1 /* filterValue */
            aload 2 /* allProviders */
         8: .line 893
            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 903
            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 904
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         2: goto 10
         3: .line 905
      StackMap locals: java.util.LinkedHashSet int
      StackMap stack:
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            aload 0 /* serviceName */
         4: .line 906
            aload 1 /* algName */
         5: .line 907
            aload 2 /* attrName */
            aload 3 /* filterValue */
         6: .line 905
            invokestatic java.security.Security.isCriterionSatisfied:(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
         7: .line 907
            ifeq 9
         8: .line 908
            aload 5 /* candidates */
            aload 4 /* allProviders */
            iload 6 /* i */
            aaload
            invokevirtual java.util.LinkedHashSet.add:(Ljava/lang/Object;)Z
            pop
         9: .line 904
      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 911
            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 923
            new java.lang.StringBuilder
            dup
            aload 1 /* serviceName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            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 925
            aload 3 /* attrName */
            ifnull 3
         2: .line 926
            new java.lang.StringBuilder
            dup
            aload 5 /* key */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* attrName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* key */
         3: .line 930
      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 932
            aload 6 /* propValue */
            ifnonnull 18
         5: .line 935
            new java.lang.StringBuilder
            dup
            ldc "Alg.Alias."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 936
            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 937
            aload 2 /* algName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 935
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 938
            aload 0 /* prov */
        10: .line 935
            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 939
            aload 7 /* standardName */
            ifnull 16
        12: .line 940
            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 942
            aload 3 /* attrName */
            ifnull 15
        14: .line 943
            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 946
      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 949
      StackMap locals:
      StackMap stack:
            aload 6 /* propValue */
            ifnonnull 18
        17: .line 952
            iconst_0
            ireturn
        end local 7 // java.lang.String standardName
        18: .line 960
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            ifnonnull 20
        19: .line 961
            iconst_1
            ireturn
        20: .line 966
      StackMap locals:
      StackMap stack:
            aload 3 /* attrName */
            invokestatic java.security.Security.isStandardAttr:(Ljava/lang/String;)Z
            ifeq 22
        21: .line 967
            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 969
      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 980
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 981
            iconst_1
            ireturn
         2: .line 983
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 984
            iconst_1
            ireturn
         4: .line 986
      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 998
            aload 0 /* attribute */
            ldc "KeySize"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 6
         1: .line 999
            aload 1 /* value */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* requestedSize */
        start local 3 // int requestedSize
         2: .line 1000
            aload 2 /* prop */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 4 /* maxSize */
        start local 4 // int maxSize
         3: .line 1001
            iload 3 /* requestedSize */
            iload 4 /* maxSize */
            if_icmpgt 5
         4: .line 1002
            iconst_1
            ireturn
         5: .line 1004
      StackMap locals: int int
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // int maxSize
        end local 3 // int requestedSize
         6: .line 1010
      StackMap locals:
      StackMap stack:
            aload 0 /* attribute */
            ldc "ImplementedIn"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 1011
            aload 1 /* value */
            aload 2 /* prop */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
         8: .line 1014
      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 1018
            aload 0 /* filterKey */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 2 /* algIndex */
        start local 2 // int algIndex
         1: .line 1020
            iload 2 /* algIndex */
            ifge 3
         2: .line 1023
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 1026
      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 1027
            aconst_null
            astore 4 /* algName */
        start local 4 // java.lang.String algName
         5: .line 1028
            aconst_null
            astore 5 /* attrName */
        start local 5 // java.lang.String attrName
         6: .line 1030
            aload 1 /* filterValue */
            invokevirtual java.lang.String.length:()I
            ifne 10
         7: .line 1033
            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 1034
            aload 4 /* algName */
            invokevirtual java.lang.String.length:()I
            ifne 20
         9: .line 1036
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1042
      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 1044
            iload 6 /* attrIndex */
            iconst_m1
            if_icmpne 13
        12: .line 1046
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 1048
      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 1049
            aload 5 /* attrName */
            invokevirtual java.lang.String.length:()I
            ifne 16
        15: .line 1051
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 1056
      StackMap locals:
      StackMap stack:
            iload 6 /* attrIndex */
            iload 2 /* algIndex */
            if_icmplt 18
        17: .line 1057
            iload 2 /* algIndex */
            iload 6 /* attrIndex */
            iconst_1
            isub
            if_icmpne 19
        18: .line 1058
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
            ldc "Invalid filter"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 1060
      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 1064
      StackMap locals:
      StackMap stack:
            iconst_3
            anewarray java.lang.String
            astore 6 /* result */
        start local 6 // java.lang.String[] result
        21: .line 1065
            aload 6 /* result */
            iconst_0
            aload 3 /* serviceName */
            aastore
        22: .line 1066
            aload 6 /* result */
            iconst_1
            aload 4 /* algName */
            aastore
        23: .line 1067
            aload 6 /* result */
            iconst_2
            aload 5 /* attrName */
            aastore
        24: .line 1069
            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 1095
            aload 0 /* serviceName */
            ifnull 2
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            ifeq 2
         1: .line 1096
            aload 0 /* serviceName */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 1097
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            areturn
         3: .line 1100
      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 1101
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 2 /* providers */
        start local 2 // java.security.Provider[] providers
         5: .line 1103
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 21
         7: .line 1105
      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 1106
            goto 19
         9: .line 1108
      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 1107
            astore 5 /* currentKey */
        start local 5 // java.lang.String currentKey
        11: .line 1109
            aload 5 /* currentKey */
        12: .line 1110
            aload 0 /* serviceName */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
        13: .line 1109
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
        14: .line 1110
            ifeq 19
        15: .line 1117
            aload 5 /* currentKey */
            ldc " "
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifge 19
        16: .line 1118
            aload 1 /* result */
            aload 5 /* currentKey */
        17: .line 1119
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
        18: .line 1118
            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 1106
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 9
        end local 4 // java.util.Enumeration e
        20: .line 1103
            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 1124
            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$2  java.security.Security$ProviderProperty
InnerClasses:
  java.security.Security$1
  java.security.Security$2
  private ProviderProperty = java.security.Security$ProviderProperty of java.security.Security
  public final Instance = sun.security.jca.GetInstance$Instance of sun.security.jca.GetInstance