public class javax.security.sasl.Sasl
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.security.sasl.Sasl
  super_class: java.lang.Object
{
  private static java.util.List<java.lang.String> disabledMechanisms;
    descriptor: Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private static final java.lang.String SASL_LOGGER_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl"

  private static final java.util.logging.Logger logger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.lang.String QOP;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.qop"

  public static final java.lang.String STRENGTH;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.strength"

  public static final java.lang.String SERVER_AUTH;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.server.authentication"

  public static final java.lang.String MAX_BUFFER;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.maxbuffer"

  public static final java.lang.String RAW_SEND_SIZE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.rawsendsize"

  public static final java.lang.String REUSE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.reuse"

  public static final java.lang.String POLICY_NOPLAINTEXT;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.noplaintext"

  public static final java.lang.String POLICY_NOACTIVE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.noactive"

  public static final java.lang.String POLICY_NODICTIONARY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.nodictionary"

  public static final java.lang.String POLICY_NOANONYMOUS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.noanonymous"

  public static final java.lang.String POLICY_FORWARD_SECRECY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.forward"

  public static final java.lang.String POLICY_PASS_CREDENTIALS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.policy.credentials"

  public static final java.lang.String CREDENTIALS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.credentials"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=0
         0: .line 71
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putstatic javax.security.sasl.Sasl.disabledMechanisms:Ljava/util/List;
         1: .line 74
            new javax.security.sasl.Sasl$1
            dup
            invokespecial javax.security.sasl.Sasl$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 0 /* prop */
        start local 0 // java.lang.String prop
         2: .line 81
            aload 0 /* prop */
            ifnull 9
         3: .line 82
            aload 0 /* prop */
            ldc "\\s*,\\s*"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 8
      StackMap locals: java.lang.String top int int java.lang.String[]
      StackMap stack:
         4: aload 4
            iload 2
            aaload
            astore 1 /* s */
        start local 1 // java.lang.String s
         5: .line 83
            aload 1 /* s */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 7
         6: .line 84
            getstatic javax.security.sasl.Sasl.disabledMechanisms:Ljava/util/List;
            aload 1 /* s */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // java.lang.String s
         7: .line 82
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         8: iload 2
            iload 3
            if_icmplt 4
        end local 0 // java.lang.String prop
         9: .line 95
      StackMap locals:
      StackMap stack:
            ldc "javax.security.sasl"
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
            putstatic javax.security.sasl.Sasl.logger:Ljava/util/logging/Logger;
        10: .line 294
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    9     0  prop  Ljava/lang/String;
            5    7     1     s  Ljava/lang/String;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.security.sasl.Sasl this
         0: .line 98
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 99
            return
        end local 0 // javax.security.sasl.Sasl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavax/security/sasl/Sasl;

  public static javax.security.sasl.SaslClient createSaslClient(java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler);
    descriptor: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslClient;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=14, args_size=6
        start local 0 // java.lang.String[] mechanisms
        start local 1 // java.lang.String authorizationId
        start local 2 // java.lang.String protocol
        start local 3 // java.lang.String serverName
        start local 4 // java.util.Map props
        start local 5 // javax.security.auth.callback.CallbackHandler cbh
         0: .line 384
            aconst_null
            astore 6 /* mech */
        start local 6 // javax.security.sasl.SaslClient mech
         1: .line 389
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         2: goto 33
         3: .line 390
      StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslClient top top top int
      StackMap stack:
            aload 0 /* mechanisms */
            iload 10 /* i */
            aaload
            dup
            astore 9 /* mechName */
        start local 9 // java.lang.String mechName
         4: ifnonnull 8
         5: .line 391
            new java.lang.NullPointerException
            dup
         6: .line 392
            ldc "Mechanism name cannot be null"
         7: .line 391
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 393
      StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslClient top top java.lang.String int
      StackMap stack:
            aload 9 /* mechName */
            invokevirtual java.lang.String.length:()I
            ifne 10
         9: .line 394
            goto 32
        10: .line 395
      StackMap locals:
      StackMap stack:
            aload 9 /* mechName */
            invokestatic javax.security.sasl.Sasl.isDisabled:(Ljava/lang/String;)Z
            ifeq 15
        11: .line 396
            getstatic javax.security.sasl.Sasl.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
        12: .line 397
            new java.lang.StringBuilder
            dup
            ldc "Disabled "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* mechName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " mechanism ignored"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 396
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        14: .line 398
            goto 32
        15: .line 400
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "SaslClientFactory."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* mechName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 11 /* mechFilter */
        start local 11 // java.lang.String mechFilter
        16: .line 401
            aload 11 /* mechFilter */
            invokestatic java.security.Security.getProviders:(Ljava/lang/String;)[Ljava/security/Provider;
            astore 12 /* provs */
        start local 12 // java.security.Provider[] provs
        17: .line 402
            iconst_0
            istore 13 /* j */
        start local 13 // int j
        18: goto 31
        19: .line 403
      StackMap locals: java.lang.String java.security.Provider[] int
      StackMap stack:
            aload 12 /* provs */
            iload 13 /* j */
            aaload
            aload 11 /* mechFilter */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* className */
        start local 8 // java.lang.String className
        20: .line 404
            aload 8 /* className */
            ifnonnull 22
        21: .line 406
            goto 30
        22: .line 409
      StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslClient top java.lang.String java.lang.String int java.lang.String java.security.Provider[] int
      StackMap stack:
            aload 12 /* provs */
            iload 13 /* j */
            aaload
            aload 8 /* className */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider;Ljava/lang/String;)Ljava/lang/Object;
            checkcast javax.security.sasl.SaslClientFactory
            astore 7 /* fac */
        start local 7 // javax.security.sasl.SaslClientFactory fac
        23: .line 410
            aload 7 /* fac */
            ifnull 30
        24: .line 411
            aload 7 /* fac */
        25: .line 412
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* mechanisms */
            iload 10 /* i */
            aaload
            aastore
            aload 1 /* authorizationId */
        26: .line 413
            aload 2 /* protocol */
            aload 3 /* serverName */
            aload 4 /* props */
            aload 5 /* cbh */
        27: .line 411
            invokeinterface javax.security.sasl.SaslClientFactory.createSaslClient:([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslClient;
            astore 6 /* mech */
        28: .line 414
            aload 6 /* mech */
            ifnull 30
        29: .line 415
            aload 6 /* mech */
            areturn
        end local 7 // javax.security.sasl.SaslClientFactory fac
        30: .line 402
      StackMap locals:
      StackMap stack:
            iinc 13 /* j */ 1
        end local 8 // java.lang.String className
      StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslClient top top java.lang.String int java.lang.String java.security.Provider[] int
      StackMap stack:
        31: aload 12 /* provs */
            ifnull 32
            iload 13 /* j */
            aload 12 /* provs */
            arraylength
            if_icmplt 19
        end local 13 // int j
        end local 12 // java.security.Provider[] provs
        end local 11 // java.lang.String mechFilter
        32: .line 389
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
        end local 9 // java.lang.String mechName
      StackMap locals: java.lang.String[] java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslClient top top top int
      StackMap stack:
        33: iload 10 /* i */
            aload 0 /* mechanisms */
            arraylength
            if_icmplt 3
        end local 10 // int i
        34: .line 421
            aconst_null
            areturn
        end local 6 // javax.security.sasl.SaslClient mech
        end local 5 // javax.security.auth.callback.CallbackHandler cbh
        end local 4 // java.util.Map props
        end local 3 // java.lang.String serverName
        end local 2 // java.lang.String protocol
        end local 1 // java.lang.String authorizationId
        end local 0 // java.lang.String[] mechanisms
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   35     0       mechanisms  [Ljava/lang/String;
            0   35     1  authorizationId  Ljava/lang/String;
            0   35     2         protocol  Ljava/lang/String;
            0   35     3       serverName  Ljava/lang/String;
            0   35     4            props  Ljava/util/Map<Ljava/lang/String;*>;
            0   35     5              cbh  Ljavax/security/auth/callback/CallbackHandler;
            1   35     6             mech  Ljavax/security/sasl/SaslClient;
           23   30     7              fac  Ljavax/security/sasl/SaslClientFactory;
           20   31     8        className  Ljava/lang/String;
            4   33     9         mechName  Ljava/lang/String;
            2   34    10                i  I
           16   32    11       mechFilter  Ljava/lang/String;
           17   32    12            provs  [Ljava/security/Provider;
           18   32    13                j  I
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: ([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;*>;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslClient;
    MethodParameters:
                 Name  Flags
      mechanisms       
      authorizationId  
      protocol         
      serverName       
      props            
      cbh              

  private static java.lang.Object loadFactory(java.security.Provider, java.lang.String);
    descriptor: (Ljava/security/Provider;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.security.Provider p
        start local 1 // java.lang.String className
         0: .line 436
            aload 0 /* p */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* cl */
        start local 2 // java.lang.ClassLoader cl
         1: .line 438
            aload 1 /* className */
            iconst_1
            aload 2 /* cl */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 3 /* implClass */
        start local 3 // java.lang.Class implClass
         2: .line 439
            aload 3 /* implClass */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
         3: areturn
        end local 3 // java.lang.Class implClass
        end local 2 // java.lang.ClassLoader cl
         4: .line 440
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* e */
        start local 2 // java.lang.ClassNotFoundException e
         5: .line 441
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot load class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.ClassNotFoundException e
         6: .line 442
      StackMap locals:
      StackMap stack: java.lang.InstantiationException
            astore 2 /* e */
        start local 2 // java.lang.InstantiationException e
         7: .line 443
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot instantiate class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.InstantiationException e
         8: .line 444
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            astore 2 /* e */
        start local 2 // java.lang.IllegalAccessException e
         9: .line 445
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot access class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.IllegalAccessException e
        10: .line 446
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            astore 2 /* e */
        start local 2 // java.lang.SecurityException e
        11: .line 447
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot access class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.SecurityException e
        end local 1 // java.lang.String className
        end local 0 // java.security.Provider p
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0          p  Ljava/security/Provider;
            0   12     1  className  Ljava/lang/String;
            1    4     2         cl  Ljava/lang/ClassLoader;
            2    4     3  implClass  Ljava/lang/Class;
            5    6     2          e  Ljava/lang/ClassNotFoundException;
            7    8     2          e  Ljava/lang/InstantiationException;
            9   10     2          e  Ljava/lang/IllegalAccessException;
           11   12     2          e  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.ClassNotFoundException
           0     3       6  Class java.lang.InstantiationException
           0     3       8  Class java.lang.IllegalAccessException
           0     3      10  Class java.lang.SecurityException
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
           Name  Flags
      p          
      className  

  public static javax.security.sasl.SaslServer createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslServer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // java.lang.String mechanism
        start local 1 // java.lang.String protocol
        start local 2 // java.lang.String serverName
        start local 3 // java.util.Map props
        start local 4 // javax.security.auth.callback.CallbackHandler cbh
         0: .line 531
            aconst_null
            astore 5 /* mech */
        start local 5 // javax.security.sasl.SaslServer mech
         1: .line 535
            aload 0 /* mechanism */
            ifnonnull 3
         2: .line 536
            new java.lang.NullPointerException
            dup
            ldc "Mechanism name cannot be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 537
      StackMap locals: javax.security.sasl.SaslServer
      StackMap stack:
            aload 0 /* mechanism */
            invokevirtual java.lang.String.length:()I
            ifne 5
         4: .line 538
            aconst_null
            areturn
         5: .line 539
      StackMap locals:
      StackMap stack:
            aload 0 /* mechanism */
            invokestatic javax.security.sasl.Sasl.isDisabled:(Ljava/lang/String;)Z
            ifeq 10
         6: .line 540
            getstatic javax.security.sasl.Sasl.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
         7: .line 541
            new java.lang.StringBuilder
            dup
            ldc "Disabled "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* mechanism */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " mechanism ignored"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 540
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         9: .line 542
            aconst_null
            areturn
        10: .line 545
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "SaslServerFactory."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* mechanism */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* mechFilter */
        start local 8 // java.lang.String mechFilter
        11: .line 546
            aload 8 /* mechFilter */
            invokestatic java.security.Security.getProviders:(Ljava/lang/String;)[Ljava/security/Provider;
            astore 9 /* provs */
        start local 9 // java.security.Provider[] provs
        12: .line 547
            iconst_0
            istore 10 /* j */
        start local 10 // int j
        13: goto 27
        14: .line 548
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslServer top top java.lang.String java.security.Provider[] int
      StackMap stack:
            aload 9 /* provs */
            iload 10 /* j */
            aaload
            aload 8 /* mechFilter */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* className */
        start local 7 // java.lang.String className
        15: .line 549
            aload 7 /* className */
            ifnonnull 19
        16: .line 550
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Provider does not support "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 551
            aload 8 /* mechFilter */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 550
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 553
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslServer top java.lang.String java.lang.String java.security.Provider[] int
      StackMap stack:
            aload 9 /* provs */
            iload 10 /* j */
            aaload
            aload 7 /* className */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider;Ljava/lang/String;)Ljava/lang/Object;
            checkcast javax.security.sasl.SaslServerFactory
            astore 6 /* fac */
        start local 6 // javax.security.sasl.SaslServerFactory fac
        20: .line 554
            aload 6 /* fac */
            ifnull 26
        21: .line 555
            aload 6 /* fac */
        22: .line 556
            aload 0 /* mechanism */
            aload 1 /* protocol */
            aload 2 /* serverName */
            aload 3 /* props */
            aload 4 /* cbh */
        23: .line 555
            invokeinterface javax.security.sasl.SaslServerFactory.createSaslServer:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslServer;
            astore 5 /* mech */
        24: .line 557
            aload 5 /* mech */
            ifnull 26
        25: .line 558
            aload 5 /* mech */
            areturn
        26: .line 547
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslServer javax.security.sasl.SaslServerFactory java.lang.String java.lang.String java.security.Provider[] int
      StackMap stack:
            iinc 10 /* j */ 1
        end local 7 // java.lang.String className
        end local 6 // javax.security.sasl.SaslServerFactory fac
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler javax.security.sasl.SaslServer top top java.lang.String java.security.Provider[] int
      StackMap stack:
        27: aload 9 /* provs */
            ifnull 28
            iload 10 /* j */
            aload 9 /* provs */
            arraylength
            if_icmplt 14
        end local 10 // int j
        28: .line 563
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 9 // java.security.Provider[] provs
        end local 8 // java.lang.String mechFilter
        end local 5 // javax.security.sasl.SaslServer mech
        end local 4 // javax.security.auth.callback.CallbackHandler cbh
        end local 3 // java.util.Map props
        end local 2 // java.lang.String serverName
        end local 1 // java.lang.String protocol
        end local 0 // java.lang.String mechanism
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   29     0   mechanism  Ljava/lang/String;
            0   29     1    protocol  Ljava/lang/String;
            0   29     2  serverName  Ljava/lang/String;
            0   29     3       props  Ljava/util/Map<Ljava/lang/String;*>;
            0   29     4         cbh  Ljavax/security/auth/callback/CallbackHandler;
            1   29     5        mech  Ljavax/security/sasl/SaslServer;
           20   27     6         fac  Ljavax/security/sasl/SaslServerFactory;
           15   27     7   className  Ljava/lang/String;
           11   29     8  mechFilter  Ljava/lang/String;
           12   29     9       provs  [Ljava/security/Provider;
           13   28    10           j  I
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;*>;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslServer;
    MethodParameters:
            Name  Flags
      mechanism   
      protocol    
      serverName  
      props       
      cbh         

  public static java.util.Enumeration<javax.security.sasl.SaslClientFactory> getSaslClientFactories();
    descriptor: ()Ljava/util/Enumeration;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 575
            ldc "SaslClientFactory"
            invokestatic javax.security.sasl.Sasl.getFactories:(Ljava/lang/String;)Ljava/util/Set;
            astore 0 /* facs */
        start local 0 // java.util.Set facs
         1: .line 576
            aload 0 /* facs */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iter */
        start local 1 // java.util.Iterator iter
         2: .line 577
            new javax.security.sasl.Sasl$2
            dup
            aload 1 /* iter */
            invokespecial javax.security.sasl.Sasl$2.<init>:(Ljava/util/Iterator;)V
            areturn
        end local 1 // java.util.Iterator iter
        end local 0 // java.util.Set facs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    3     0  facs  Ljava/util/Set<Ljava/lang/Object;>;
            2    3     1  iter  Ljava/util/Iterator<Ljava/lang/Object;>;
    Signature: ()Ljava/util/Enumeration<Ljavax/security/sasl/SaslClientFactory;>;

  public static java.util.Enumeration<javax.security.sasl.SaslServerFactory> getSaslServerFactories();
    descriptor: ()Ljava/util/Enumeration;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 596
            ldc "SaslServerFactory"
            invokestatic javax.security.sasl.Sasl.getFactories:(Ljava/lang/String;)Ljava/util/Set;
            astore 0 /* facs */
        start local 0 // java.util.Set facs
         1: .line 597
            aload 0 /* facs */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iter */
        start local 1 // java.util.Iterator iter
         2: .line 598
            new javax.security.sasl.Sasl$3
            dup
            aload 1 /* iter */
            invokespecial javax.security.sasl.Sasl$3.<init>:(Ljava/util/Iterator;)V
            areturn
        end local 1 // java.util.Iterator iter
        end local 0 // java.util.Set facs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    3     0  facs  Ljava/util/Set<Ljava/lang/Object;>;
            2    3     1  iter  Ljava/util/Iterator<Ljava/lang/Object;>;
    Signature: ()Ljava/util/Enumeration<Ljavax/security/sasl/SaslServerFactory;>;

  private static java.util.Set<java.lang.Object> getFactories(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=9, args_size=1
        start local 0 // java.lang.String serviceName
         0: .line 609
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* result */
        start local 1 // java.util.HashSet result
         1: .line 611
            aload 0 /* serviceName */
            ifnull 3
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            ifeq 3
         2: .line 612
            aload 0 /* serviceName */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 613
      StackMap locals: java.util.HashSet
      StackMap stack:
            aload 1 /* result */
            areturn
         4: .line 617
      StackMap locals:
      StackMap stack:
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 2 /* providers */
        start local 2 // java.security.Provider[] providers
         5: .line 618
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 3 /* classes */
        start local 3 // java.util.HashSet classes
         6: .line 621
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         7: goto 24
         8: .line 622
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] java.util.HashSet top int
      StackMap stack:
            aload 3 /* classes */
            invokevirtual java.util.HashSet.clear:()V
         9: .line 625
            aload 2 /* providers */
            iload 5 /* i */
            aaload
            invokevirtual java.security.Provider.keys:()Ljava/util/Enumeration;
            astore 6 /* e */
        start local 6 // java.util.Enumeration e
        10: goto 22
        11: .line 626
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 6 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* currentKey */
        start local 7 // java.lang.String currentKey
        12: .line 627
            aload 7 /* currentKey */
            aload 0 /* serviceName */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 22
        13: .line 634
            aload 7 /* currentKey */
            ldc " "
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifge 22
        14: .line 635
            aload 2 /* providers */
            iload 5 /* i */
            aaload
            aload 7 /* currentKey */
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* className */
        start local 8 // java.lang.String className
        15: .line 636
            aload 3 /* classes */
            aload 8 /* className */
            invokevirtual java.util.HashSet.contains:(Ljava/lang/Object;)Z
            ifne 22
        16: .line 637
            aload 3 /* classes */
            aload 8 /* className */
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
        17: .line 639
            aload 2 /* providers */
            iload 5 /* i */
            aaload
            aload 8 /* className */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider;Ljava/lang/String;)Ljava/lang/Object;
            astore 4 /* fac */
        start local 4 // java.lang.Object fac
        18: .line 640
            aload 4 /* fac */
            ifnull 22
        19: .line 641
            aload 1 /* result */
            aload 4 /* fac */
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
        20: .line 643
            goto 22
        end local 4 // java.lang.Object fac
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] java.util.HashSet top int java.util.Enumeration java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
        21: pop
        end local 8 // java.lang.String className
        end local 7 // java.lang.String currentKey
        22: .line 625
      StackMap locals:
      StackMap stack:
            aload 6 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 11
        end local 6 // java.util.Enumeration e
        23: .line 621
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 5 /* i */
            aload 2 /* providers */
            arraylength
            if_icmplt 8
        end local 5 // int i
        25: .line 650
            aload 1 /* result */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            areturn
        end local 3 // java.util.HashSet classes
        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   26     0  serviceName  Ljava/lang/String;
            1   26     1       result  Ljava/util/HashSet<Ljava/lang/Object;>;
            5   26     2    providers  [Ljava/security/Provider;
            6   26     3      classes  Ljava/util/HashSet<Ljava/lang/String;>;
           18   21     4          fac  Ljava/lang/Object;
            7   25     5            i  I
           10   23     6            e  Ljava/util/Enumeration;
           12   22     7   currentKey  Ljava/lang/String;
           15   22     8    className  Ljava/lang/String;
      Exception table:
        from    to  target  type
          17    20      21  Class java.lang.Exception
    Signature: (Ljava/lang/String;)Ljava/util/Set<Ljava/lang/Object;>;
    MethodParameters:
             Name  Flags
      serviceName  

  private static boolean isDisabled(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 name
         0: .line 654
            getstatic javax.security.sasl.Sasl.disabledMechanisms:Ljava/util/List;
            aload 0 /* name */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  
}
SourceFile: "Sasl.java"
NestMembers:
  javax.security.sasl.Sasl$1  javax.security.sasl.Sasl$2  javax.security.sasl.Sasl$3
InnerClasses:
  javax.security.sasl.Sasl$1
  javax.security.sasl.Sasl$2
  javax.security.sasl.Sasl$3