class org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator implements org.apache.cassandra.auth.IAuthenticator$SaslNegotiator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator
  super_class: java.lang.Object
{
  private boolean complete;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String username;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String password;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  final org.apache.cassandra.auth.PasswordAuthenticator this$0;
    descriptor: Lorg/apache/cassandra/auth/PasswordAuthenticator;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(org.apache.cassandra.auth.PasswordAuthenticator);
    descriptor: (Lorg/apache/cassandra/auth/PasswordAuthenticator;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
         0: .line 211
            aload 0 /* this */
            aload 1
            putfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.this$0:Lorg/apache/cassandra/auth/PasswordAuthenticator;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 213
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.complete:Z
         2: .line 211
            return
        end local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/auth/PasswordAuthenticator$PlainTextSaslAuthenticator;
    MethodParameters:
        Name  Flags
      this$0  final

  public byte[] evaluateResponse(byte[]);
    descriptor: ([B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
        start local 1 // byte[] clientResponse
         0: .line 219
            aload 0 /* this */
            aload 1 /* clientResponse */
            invokevirtual org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.decodeCredentials:([B)V
         1: .line 220
            aload 0 /* this */
            iconst_1
            putfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.complete:Z
         2: .line 221
            aconst_null
            areturn
        end local 1 // byte[] clientResponse
        end local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lorg/apache/cassandra/auth/PasswordAuthenticator$PlainTextSaslAuthenticator;
            0    3     1  clientResponse  [B
    Exceptions:
      throws org.apache.cassandra.exceptions.AuthenticationException
    MethodParameters:
                Name  Flags
      clientResponse  

  public boolean isComplete();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
         0: .line 226
            aload 0 /* this */
            getfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.complete:Z
            ireturn
        end local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/auth/PasswordAuthenticator$PlainTextSaslAuthenticator;

  public org.apache.cassandra.auth.AuthenticatedUser getAuthenticatedUser();
    descriptor: ()Lorg/apache/cassandra/auth/AuthenticatedUser;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
         0: .line 231
            aload 0 /* this */
            getfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.complete:Z
            ifne 2
         1: .line 232
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            ldc "SASL negotiation not complete"
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.this$0:Lorg/apache/cassandra/auth/PasswordAuthenticator;
            aload 0 /* this */
            getfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.username:Ljava/lang/String;
            aload 0 /* this */
            getfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.password:Ljava/lang/String;
            invokevirtual org.apache.cassandra.auth.PasswordAuthenticator.authenticate:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/AuthenticatedUser;
            areturn
        end local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/auth/PasswordAuthenticator$PlainTextSaslAuthenticator;
    Exceptions:
      throws org.apache.cassandra.exceptions.AuthenticationException

  private void decodeCredentials(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
        start local 1 // byte[] bytes
         0: .line 250
            getstatic org.apache.cassandra.auth.PasswordAuthenticator.logger:Lorg/slf4j/Logger;
            ldc "Decoding credentials from client token"
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;)V
         1: .line 251
            aconst_null
            astore 2 /* user */
        start local 2 // byte[] user
         2: .line 252
            aconst_null
            astore 3 /* pass */
        start local 3 // byte[] pass
         3: .line 253
            aload 1 /* bytes */
            arraylength
            istore 4 /* end */
        start local 4 // int end
         4: .line 254
            aload 1 /* bytes */
            arraylength
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
         5: goto 14
         6: .line 256
      StackMap locals: org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator byte[] byte[] byte[] int int
      StackMap stack:
            aload 1 /* bytes */
            iload 5 /* i */
            baload
            ifne 13
         7: .line 258
            aload 3 /* pass */
            ifnonnull 9
         8: .line 259
            aload 1 /* bytes */
            iload 5 /* i */
            iconst_1
            iadd
            iload 4 /* end */
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            astore 3 /* pass */
            goto 12
         9: .line 260
      StackMap locals:
      StackMap stack:
            aload 2 /* user */
            ifnonnull 11
        10: .line 261
            aload 1 /* bytes */
            iload 5 /* i */
            iconst_1
            iadd
            iload 4 /* end */
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            astore 2 /* user */
            goto 12
        11: .line 263
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            ldc "Credential format error: username or password is empty or contains NUL(\\0) character"
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 265
      StackMap locals:
      StackMap stack:
            iload 5 /* i */
            istore 4 /* end */
        13: .line 254
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 5 /* i */
            ifge 6
        end local 5 // int i
        15: .line 269
            aload 3 /* pass */
            ifnull 16
            aload 3 /* pass */
            arraylength
            ifne 17
        16: .line 270
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            ldc "Password must not be null"
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 271
      StackMap locals:
      StackMap stack:
            aload 2 /* user */
            ifnull 18
            aload 2 /* user */
            arraylength
            ifne 19
        18: .line 272
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            ldc "Authentication ID must not be null"
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.String
            dup
            aload 2 /* user */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            putfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.username:Ljava/lang/String;
        20: .line 275
            aload 0 /* this */
            new java.lang.String
            dup
            aload 3 /* pass */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            putfield org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator.password:Ljava/lang/String;
        21: .line 276
            return
        end local 4 // int end
        end local 3 // byte[] pass
        end local 2 // byte[] user
        end local 1 // byte[] bytes
        end local 0 // org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   22     0   this  Lorg/apache/cassandra/auth/PasswordAuthenticator$PlainTextSaslAuthenticator;
            0   22     1  bytes  [B
            2   22     2   user  [B
            3   22     3   pass  [B
            4   22     4    end  I
            5   15     5      i  I
    Exceptions:
      throws org.apache.cassandra.exceptions.AuthenticationException
    MethodParameters:
       Name  Flags
      bytes  
}
SourceFile: "PasswordAuthenticator.java"
NestHost: org.apache.cassandra.auth.PasswordAuthenticator
InnerClasses:
  public abstract SaslNegotiator = org.apache.cassandra.auth.IAuthenticator$SaslNegotiator of org.apache.cassandra.auth.IAuthenticator
  private PlainTextSaslAuthenticator = org.apache.cassandra.auth.PasswordAuthenticator$PlainTextSaslAuthenticator of org.apache.cassandra.auth.PasswordAuthenticator