class com.mongodb.internal.connection.PlainAuthenticator extends com.mongodb.internal.connection.SaslAuthenticator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.internal.connection.PlainAuthenticator
  super_class: com.mongodb.internal.connection.SaslAuthenticator
{
  private static final java.lang.String DEFAULT_PROTOCOL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "mongodb"

  void <init>(com.mongodb.internal.connection.MongoCredentialWithCache);
    descriptor: (Lcom/mongodb/internal/connection/MongoCredentialWithCache;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.connection.PlainAuthenticator this
        start local 1 // com.mongodb.internal.connection.MongoCredentialWithCache credential
         0: .line 40
            aload 0 /* this */
            aload 1 /* credential */
            invokespecial com.mongodb.internal.connection.SaslAuthenticator.<init>:(Lcom/mongodb/internal/connection/MongoCredentialWithCache;)V
         1: .line 41
            return
        end local 1 // com.mongodb.internal.connection.MongoCredentialWithCache credential
        end local 0 // com.mongodb.internal.connection.PlainAuthenticator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/mongodb/internal/connection/PlainAuthenticator;
            0    2     1  credential  Lcom/mongodb/internal/connection/MongoCredentialWithCache;
    MethodParameters:
            Name  Flags
      credential  final

  public java.lang.String getMechanismName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.internal.connection.PlainAuthenticator this
         0: .line 45
            getstatic com.mongodb.AuthenticationMechanism.PLAIN:Lcom/mongodb/AuthenticationMechanism;
            invokevirtual com.mongodb.AuthenticationMechanism.getMechanismName:()Ljava/lang/String;
            areturn
        end local 0 // com.mongodb.internal.connection.PlainAuthenticator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/connection/PlainAuthenticator;

  protected javax.security.sasl.SaslClient createSaslClient(com.mongodb.ServerAddress);
    descriptor: (Lcom/mongodb/ServerAddress;)Ljavax/security/sasl/SaslClient;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // com.mongodb.internal.connection.PlainAuthenticator this
        start local 1 // com.mongodb.ServerAddress serverAddress
         0: .line 50
            aload 0 /* this */
            invokevirtual com.mongodb.internal.connection.PlainAuthenticator.getMongoCredential:()Lcom/mongodb/MongoCredential;
            astore 2 /* credential */
        start local 2 // com.mongodb.MongoCredential credential
         1: .line 51
            ldc "mechanism is PLAIN"
            aload 2 /* credential */
            invokevirtual com.mongodb.MongoCredential.getAuthenticationMechanism:()Lcom/mongodb/AuthenticationMechanism;
            getstatic com.mongodb.AuthenticationMechanism.PLAIN:Lcom/mongodb/AuthenticationMechanism;
            if_acmpne 2
            iconst_1
            goto 3
      StackMap locals: com.mongodb.internal.connection.PlainAuthenticator com.mongodb.ServerAddress com.mongodb.MongoCredential
      StackMap stack: java.lang.String
         2: iconst_0
      StackMap locals: com.mongodb.internal.connection.PlainAuthenticator com.mongodb.ServerAddress com.mongodb.MongoCredential
      StackMap stack: java.lang.String int
         3: invokestatic com.mongodb.assertions.Assertions.isTrue:(Ljava/lang/String;Z)V
         4: .line 53
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            getstatic com.mongodb.AuthenticationMechanism.PLAIN:Lcom/mongodb/AuthenticationMechanism;
            invokevirtual com.mongodb.AuthenticationMechanism.getMechanismName:()Ljava/lang/String;
            aastore
         5: .line 54
            aload 2 /* credential */
            invokevirtual com.mongodb.MongoCredential.getUserName:()Ljava/lang/String;
         6: .line 55
            ldc "mongodb"
         7: .line 56
            aload 1 /* serverAddress */
            invokevirtual com.mongodb.ServerAddress.getHost:()Ljava/lang/String;
         8: .line 57
            aconst_null
         9: .line 58
            new com.mongodb.internal.connection.PlainAuthenticator$1
            dup
            aload 0 /* this */
            aload 2 /* credential */
            invokespecial com.mongodb.internal.connection.PlainAuthenticator$1.<init>:(Lcom/mongodb/internal/connection/PlainAuthenticator;Lcom/mongodb/MongoCredential;)V
        10: .line 53
            invokestatic javax.security.sasl.Sasl.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;
        11: areturn
        12: .line 71
      StackMap locals:
      StackMap stack: javax.security.sasl.SaslException
            astore 3 /* e */
        start local 3 // javax.security.sasl.SaslException e
        13: .line 72
            new com.mongodb.MongoSecurityException
            dup
            aload 2 /* credential */
            ldc "Exception initializing SASL client"
            aload 3 /* e */
            invokespecial com.mongodb.MongoSecurityException.<init>:(Lcom/mongodb/MongoCredential;Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.security.sasl.SaslException e
        end local 2 // com.mongodb.MongoCredential credential
        end local 1 // com.mongodb.ServerAddress serverAddress
        end local 0 // com.mongodb.internal.connection.PlainAuthenticator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lcom/mongodb/internal/connection/PlainAuthenticator;
            0   14     1  serverAddress  Lcom/mongodb/ServerAddress;
            1   14     2     credential  Lcom/mongodb/MongoCredential;
           13   14     3              e  Ljavax/security/sasl/SaslException;
      Exception table:
        from    to  target  type
           4    11      12  Class javax.security.sasl.SaslException
    MethodParameters:
               Name  Flags
      serverAddress  final
}
SourceFile: "PlainAuthenticator.java"
NestMembers:
  com.mongodb.internal.connection.PlainAuthenticator$1
InnerClasses:
  com.mongodb.internal.connection.PlainAuthenticator$1