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
{
  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 BOUND_SERVER_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.sasl.bound.server.name"

  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"

  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 69
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 70
            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=17, 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 373
            aconst_null
            astore 6 /* mech */
        start local 6 // javax.security.sasl.SaslClient mech
         1: .line 378
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         2: goto 29
         3: .line 379
      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 380
            new java.lang.NullPointerException
            dup
         6: .line 381
            ldc "Mechanism name cannot be null"
         7: .line 380
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 382
      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 383
            goto 28
        10: .line 385
      StackMap locals:
      StackMap stack:
            ldc "SaslClientFactory"
            astore 11 /* type */
        start local 11 // java.lang.String type
        11: .line 386
            new java.lang.StringBuilder
            dup
            aload 11 /* type */
            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 9 /* mechName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.getProviders:(Ljava/lang/String;)[Ljava/security/Provider;
            astore 12 /* provs */
        start local 12 // java.security.Provider[] provs
        12: .line 387
            aload 12 /* provs */
            ifnull 28
        13: .line 388
            aload 12 /* provs */
            dup
            astore 16
            arraylength
            istore 15
            iconst_0
            istore 14
            goto 27
      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[] top int int java.security.Provider[]
      StackMap stack:
        14: aload 16
            iload 14
            aaload
            astore 13 /* p */
        start local 13 // java.security.Provider p
        15: .line 389
            aload 13 /* p */
            aload 11 /* type */
            aload 9 /* mechName */
            invokevirtual java.security.Provider.getService:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
            astore 8 /* service */
        start local 8 // java.security.Provider$Service service
        16: .line 390
            aload 8 /* service */
            ifnonnull 18
        17: .line 392
            goto 26
        18: .line 395
      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.security.Provider$Service java.lang.String int java.lang.String java.security.Provider[] java.security.Provider int int java.security.Provider[]
      StackMap stack:
            aload 8 /* service */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider$Service;)Ljava/lang/Object;
            checkcast javax.security.sasl.SaslClientFactory
            astore 7 /* fac */
        start local 7 // javax.security.sasl.SaslClientFactory fac
        19: .line 396
            aload 7 /* fac */
            ifnull 26
        20: .line 397
            aload 7 /* fac */
        21: .line 398
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* mechanisms */
            iload 10 /* i */
            aaload
            aastore
            aload 1 /* authorizationId */
        22: .line 399
            aload 2 /* protocol */
            aload 3 /* serverName */
            aload 4 /* props */
            aload 5 /* cbh */
        23: .line 397
            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 */
        24: .line 400
            aload 6 /* mech */
            ifnull 26
        25: .line 401
            aload 6 /* mech */
            areturn
        end local 13 // java.security.Provider p
        end local 8 // java.security.Provider$Service service
        end local 7 // javax.security.sasl.SaslClientFactory fac
        26: .line 388
      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[] top int int java.security.Provider[]
      StackMap stack:
            iinc 14 1
      StackMap locals:
      StackMap stack:
        27: iload 14
            iload 15
            if_icmplt 14
        end local 12 // java.security.Provider[] provs
        end local 11 // java.lang.String type
        28: .line 378
      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:
            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:
        29: iload 10 /* i */
            aload 0 /* mechanisms */
            arraylength
            if_icmplt 3
        end local 10 // int i
        30: .line 407
            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   31     0       mechanisms  [Ljava/lang/String;
            0   31     1  authorizationId  Ljava/lang/String;
            0   31     2         protocol  Ljava/lang/String;
            0   31     3       serverName  Ljava/lang/String;
            0   31     4            props  Ljava/util/Map<Ljava/lang/String;*>;
            0   31     5              cbh  Ljavax/security/auth/callback/CallbackHandler;
            1   31     6             mech  Ljavax/security/sasl/SaslClient;
           19   26     7              fac  Ljavax/security/sasl/SaslClientFactory;
           16   26     8          service  Ljava/security/Provider$Service;
            4   29     9         mechName  Ljava/lang/String;
            2   30    10                i  I
           11   28    11             type  Ljava/lang/String;
           12   28    12            provs  [Ljava/security/Provider;
           15   26    13                p  Ljava/security/Provider;
    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$Service);
    descriptor: (Ljava/security/Provider$Service;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.security.Provider$Service service
         0: .line 422
            aload 0 /* service */
            aconst_null
            invokevirtual java.security.Provider$Service.newInstance:(Ljava/lang/Object;)Ljava/lang/Object;
         1: areturn
         2: .line 423
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         3: .line 424
            new javax.security.sasl.SaslException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot instantiate service "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* service */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.security.Provider$Service service
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  service  Ljava/security/Provider$Service;
            3    4     1        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidParameterException
           0     1       2  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
         Name  Flags
      service  

  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=14, 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 516
            aconst_null
            astore 5 /* mech */
        start local 5 // javax.security.sasl.SaslServer mech
         1: .line 520
            aload 0 /* mechanism */
            ifnonnull 3
         2: .line 521
            new java.lang.NullPointerException
            dup
            ldc "Mechanism name cannot be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 522
      StackMap locals: javax.security.sasl.SaslServer
      StackMap stack:
            aload 0 /* mechanism */
            invokevirtual java.lang.String.length:()I
            ifne 5
         4: .line 523
            aconst_null
            areturn
         5: .line 526
      StackMap locals:
      StackMap stack:
            ldc "SaslServerFactory"
            astore 8 /* type */
        start local 8 // java.lang.String type
         6: .line 527
            new java.lang.StringBuilder
            dup
            aload 8 /* type */
            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 0 /* mechanism */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.security.Security.getProviders:(Ljava/lang/String;)[Ljava/security/Provider;
            astore 9 /* provs */
        start local 9 // java.security.Provider[] provs
         7: .line 528
            aload 9 /* provs */
            ifnull 24
         8: .line 529
            aload 9 /* provs */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 23
      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[] top int int java.security.Provider[]
      StackMap stack:
         9: aload 13
            iload 11
            aaload
            astore 10 /* p */
        start local 10 // java.security.Provider p
        10: .line 530
            aload 10 /* p */
            aload 8 /* type */
            aload 0 /* mechanism */
            invokevirtual java.security.Provider.getService:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
            astore 7 /* service */
        start local 7 // java.security.Provider$Service service
        11: .line 531
            aload 7 /* service */
            ifnonnull 15
        12: .line 532
            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
        13: .line 533
            aload 0 /* mechanism */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 532
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 535
      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.security.Provider$Service java.lang.String java.security.Provider[] java.security.Provider int int java.security.Provider[]
      StackMap stack:
            aload 7 /* service */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider$Service;)Ljava/lang/Object;
            checkcast javax.security.sasl.SaslServerFactory
            astore 6 /* fac */
        start local 6 // javax.security.sasl.SaslServerFactory fac
        16: .line 536
            aload 6 /* fac */
            ifnull 22
        17: .line 537
            aload 6 /* fac */
        18: .line 538
            aload 0 /* mechanism */
            aload 1 /* protocol */
            aload 2 /* serverName */
            aload 3 /* props */
            aload 4 /* cbh */
        19: .line 537
            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 */
        20: .line 539
            aload 5 /* mech */
            ifnull 22
        21: .line 540
            aload 5 /* mech */
            areturn
        end local 10 // java.security.Provider p
        end local 7 // java.security.Provider$Service service
        end local 6 // javax.security.sasl.SaslServerFactory fac
        22: .line 529
      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[] top int int java.security.Provider[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        23: iload 11
            iload 12
            if_icmplt 9
        24: .line 545
      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[]
      StackMap stack:
            aconst_null
            areturn
        end local 9 // java.security.Provider[] provs
        end local 8 // java.lang.String type
        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   25     0   mechanism  Ljava/lang/String;
            0   25     1    protocol  Ljava/lang/String;
            0   25     2  serverName  Ljava/lang/String;
            0   25     3       props  Ljava/util/Map<Ljava/lang/String;*>;
            0   25     4         cbh  Ljavax/security/auth/callback/CallbackHandler;
            1   25     5        mech  Ljavax/security/sasl/SaslServer;
           16   22     6         fac  Ljavax/security/sasl/SaslServerFactory;
           11   22     7     service  Ljava/security/Provider$Service;
            6   25     8        type  Ljava/lang/String;
            7   25     9       provs  [Ljava/security/Provider;
           10   22    10           p  Ljava/security/Provider;
    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 557
            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 558
            aload 0 /* facs */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iter */
        start local 1 // java.util.Iterator iter
         2: .line 559
            new javax.security.sasl.Sasl$1
            dup
            aload 1 /* iter */
            invokespecial javax.security.sasl.Sasl$1.<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 578
            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 579
            aload 0 /* facs */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* iter */
        start local 1 // java.util.Iterator iter
         2: .line 580
            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/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=10, args_size=1
        start local 0 // java.lang.String serviceName
         0: .line 591
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* result */
        start local 1 // java.util.HashSet result
         1: .line 593
            aload 0 /* serviceName */
            ifnull 3
            aload 0 /* serviceName */
            invokevirtual java.lang.String.length:()I
            ifeq 3
         2: .line 594
            aload 0 /* serviceName */
            ldc "."
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 595
      StackMap locals: java.util.HashSet
      StackMap stack:
            aload 1 /* result */
            areturn
         4: .line 598
      StackMap locals:
      StackMap stack:
            invokestatic java.security.Security.getProviders:()[Ljava/security/Provider;
            astore 2 /* provs */
        start local 2 // java.security.Provider[] provs
         5: .line 601
            aload 2 /* provs */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 18
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] top top int int java.security.Provider[]
      StackMap stack:
         6: aload 7
            iload 5
            aaload
            astore 4 /* p */
        start local 4 // java.security.Provider p
         7: .line 603
            aload 4 /* p */
            invokevirtual java.security.Provider.getServices:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8 /* iter */
        start local 8 // java.util.Iterator iter
         8: .line 604
            goto 16
         9: .line 605
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] top java.security.Provider int int java.security.Provider[] java.util.Iterator
      StackMap stack:
            aload 8 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.Provider$Service
            astore 9 /* s */
        start local 9 // java.security.Provider$Service s
        10: .line 606
            aload 9 /* s */
            invokevirtual java.security.Provider$Service.getType:()Ljava/lang/String;
            aload 0 /* serviceName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        11: .line 608
            aload 9 /* s */
            invokestatic javax.security.sasl.Sasl.loadFactory:(Ljava/security/Provider$Service;)Ljava/lang/Object;
            astore 3 /* fac */
        start local 3 // java.lang.Object fac
        12: .line 609
            aload 3 /* fac */
            ifnull 16
        13: .line 610
            aload 1 /* result */
            aload 3 /* fac */
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
        14: .line 612
            goto 16
        end local 3 // java.lang.Object fac
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] top java.security.Provider int int java.security.Provider[] java.util.Iterator java.security.Provider$Service
      StackMap stack: java.lang.Exception
        15: pop
        end local 9 // java.security.Provider$Service s
        16: .line 604
      StackMap locals:
      StackMap stack:
            aload 8 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        end local 8 // java.util.Iterator iter
        end local 4 // java.security.Provider p
        17: .line 601
            iinc 5 1
      StackMap locals: java.lang.String java.util.HashSet java.security.Provider[] top top int int java.security.Provider[]
      StackMap stack:
        18: iload 5
            iload 6
            if_icmplt 6
        19: .line 617
            aload 1 /* result */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            areturn
        end local 2 // java.security.Provider[] provs
        end local 1 // java.util.HashSet result
        end local 0 // java.lang.String serviceName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0  serviceName  Ljava/lang/String;
            1   20     1       result  Ljava/util/HashSet<Ljava/lang/Object;>;
            5   20     2        provs  [Ljava/security/Provider;
           12   15     3          fac  Ljava/lang/Object;
            7   17     4            p  Ljava/security/Provider;
            8   17     8         iter  Ljava/util/Iterator<Ljava/security/Provider$Service;>;
           10   16     9            s  Ljava/security/Provider$Service;
      Exception table:
        from    to  target  type
          11    14      15  Class java.lang.Exception
    Signature: (Ljava/lang/String;)Ljava/util/Set<Ljava/lang/Object;>;
    MethodParameters:
             Name  Flags
      serviceName  
}
SourceFile: "Sasl.java"
NestMembers:
  javax.security.sasl.Sasl$1  javax.security.sasl.Sasl$2
InnerClasses:
  public Service = java.security.Provider$Service of java.security.Provider
  javax.security.sasl.Sasl$1
  javax.security.sasl.Sasl$2