class io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec extends io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec<java.lang.Void, io.vertx.mysqlclient.impl.command.ChangeUserCommand>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec
  super_class: io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec
{
  void <init>(io.vertx.mysqlclient.impl.command.ChangeUserCommand);
    descriptor: (Lio/vertx/mysqlclient/impl/command/ChangeUserCommand;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
        start local 1 // io.vertx.mysqlclient.impl.command.ChangeUserCommand cmd
         0: .line 31
            aload 0 /* this */
            aload 1 /* cmd */
            invokespecial io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec.<init>:(Lio/vertx/mysqlclient/impl/command/AuthenticationCommandBase;)V
         1: .line 32
            return
        end local 1 // io.vertx.mysqlclient.impl.command.ChangeUserCommand cmd
        end local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec;
            0    2     1   cmd  Lio/vertx/mysqlclient/impl/command/ChangeUserCommand;
    MethodParameters:
      Name  Flags
      cmd   

  void encode(io.vertx.mysqlclient.impl.codec.MySQLEncoder);
    descriptor: (Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
        start local 1 // io.vertx.mysqlclient.impl.codec.MySQLEncoder encoder
         0: .line 36
            aload 0 /* this */
            aload 1 /* encoder */
            invokespecial io.vertx.mysqlclient.impl.codec.AuthenticationCommandBaseCodec.encode:(Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;)V
         1: .line 37
            aload 0 /* this */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.sendChangeUserCommand:()V
         2: .line 38
            return
        end local 1 // io.vertx.mysqlclient.impl.codec.MySQLEncoder encoder
        end local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec;
            0    3     1  encoder  Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
    MethodParameters:
         Name  Flags
      encoder  

  void decodePayload(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
        start local 1 // io.netty.buffer.ByteBuf payload
        start local 2 // int payloadLength
         0: .line 42
            aload 1 /* payload */
            aload 1 /* payload */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
            invokevirtual io.netty.buffer.ByteBuf.getUnsignedByte:(I)S
            istore 3 /* header */
        start local 3 // int header
         1: .line 43
            iload 3 /* header */
            lookupswitch { // 4
                    0: 6
                    1: 4
                  254: 2
                  255: 8
              default: 9
          }
         2: .line 45
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.password:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.handleAuthSwitchRequest:([BLio/netty/buffer/ByteBuf;)V
         3: .line 46
            goto 9
         4: .line 48
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.password:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.handleAuthMoreData:([BLio/netty/buffer/ByteBuf;)V
         5: .line 49
            goto 9
         6: .line 51
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.completionHandler:Lio/vertx/core/Handler;
            aconst_null
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.success:(Ljava/lang/Object;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         7: .line 52
            goto 9
         8: .line 54
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* payload */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.handleErrorPacketPayload:(Lio/netty/buffer/ByteBuf;)V
         9: .line 57
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int header
        end local 2 // int payloadLength
        end local 1 // io.netty.buffer.ByteBuf payload
        end local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lio/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec;
            0   10     1        payload  Lio/netty/buffer/ByteBuf;
            0   10     2  payloadLength  I
            1   10     3         header  I
    MethodParameters:
               Name  Flags
      payload        
      payloadLength  

  private void handleAuthSwitchRequest(byte[], io.netty.buffer.ByteBuf);
    descriptor: ([BLio/netty/buffer/ByteBuf;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
        start local 1 // byte[] password
        start local 2 // io.netty.buffer.ByteBuf payload
         0: .line 61
            aload 2 /* payload */
            iconst_1
            invokevirtual io.netty.buffer.ByteBuf.skipBytes:(I)Lio/netty/buffer/ByteBuf;
            pop
         1: .line 62
            aload 2 /* payload */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.readNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/nio/charset/Charset;)Ljava/lang/String;
            astore 3 /* pluginName */
        start local 3 // java.lang.String pluginName
         2: .line 63
            aload 0 /* this */
            bipush 20
            newarray 8
            putfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.authPluginData:[B
         3: .line 64
            aload 2 /* payload */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.authPluginData:[B
            invokevirtual io.netty.buffer.ByteBuf.readBytes:([B)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 66
            aload 3 /* pluginName */
            dup
            astore 5
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 3
          -1232755404: 5
          -1034481270: 6
           2050512934: 7
              default: 14
          }
      StackMap locals: io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec byte[] io.netty.buffer.ByteBuf java.lang.String top java.lang.String
      StackMap stack:
         5: aload 5
            ldc "caching_sha2_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 14
      StackMap locals:
      StackMap stack:
         6: aload 5
            ldc "mysql_clear_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 14
      StackMap locals:
      StackMap stack:
         7: aload 5
            ldc "mysql_native_password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 14
         8: .line 68
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.authPluginData:[B
            invokestatic io.vertx.mysqlclient.impl.util.Native41Authenticator.encode:([B[B)[B
            astore 4 /* authResponse */
        start local 4 // byte[] authResponse
         9: .line 69
            goto 16
        end local 4 // byte[] authResponse
        10: .line 71
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.authPluginData:[B
            invokestatic io.vertx.mysqlclient.impl.util.CachingSha2Authenticator.encode:([B[B)[B
            astore 4 /* authResponse */
        start local 4 // byte[] authResponse
        11: .line 72
            goto 16
        end local 4 // byte[] authResponse
        12: .line 74
      StackMap locals:
      StackMap stack:
            aload 1 /* password */
            astore 4 /* authResponse */
        start local 4 // byte[] authResponse
        13: .line 75
            goto 16
        end local 4 // byte[] authResponse
        14: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.completionHandler:Lio/vertx/core/Handler;
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* pluginName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            invokestatic io.vertx.sqlclient.impl.command.CommandResponse.failure:(Ljava/lang/Throwable;)Lio/vertx/sqlclient/impl/command/CommandResponse;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        15: .line 78
            return
        start local 4 // byte[] authResponse
        16: .line 80
      StackMap locals: io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec byte[] io.netty.buffer.ByteBuf java.lang.String byte[]
      StackMap stack:
            aload 0 /* this */
            aload 4 /* authResponse */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.sendBytesAsPacket:([B)V
        17: .line 81
            return
        end local 4 // byte[] authResponse
        end local 3 // java.lang.String pluginName
        end local 2 // io.netty.buffer.ByteBuf payload
        end local 1 // byte[] password
        end local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Lio/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec;
            0   18     1      password  [B
            0   18     2       payload  Lio/netty/buffer/ByteBuf;
            2   18     3    pluginName  Ljava/lang/String;
            9   10     4  authResponse  [B
           11   12     4  authResponse  [B
           13   14     4  authResponse  [B
           16   18     4  authResponse  [B
    MethodParameters:
          Name  Flags
      password  
      payload   

  private void sendChangeUserCommand();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
         0: .line 84
            aload 0 /* this */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.allocateBuffer:()Lio/netty/buffer/ByteBuf;
            astore 1 /* packet */
        start local 1 // io.netty.buffer.ByteBuf packet
         1: .line 86
            aload 1 /* packet */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            istore 2 /* packetStartIdx */
        start local 2 // int packetStartIdx
         2: .line 87
            aload 1 /* packet */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeMediumLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         3: .line 88
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.sequenceId:I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 91
            aload 1 /* packet */
            bipush 17
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         5: .line 92
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.username:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
         6: .line 93
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.password:()Ljava/lang/String;
            astore 3 /* password */
        start local 3 // java.lang.String password
         7: .line 94
            aload 3 /* password */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 10
         8: .line 95
            aload 1 /* packet */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         9: .line 96
            goto 12
        10: .line 97
      StackMap locals: io.netty.buffer.ByteBuf int java.lang.String
      StackMap stack:
            aload 1 /* packet */
            aload 3 /* password */
            invokevirtual java.lang.String.length:()I
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
        11: .line 98
            aload 1 /* packet */
            aload 3 /* password */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual io.netty.buffer.ByteBuf.writeCharSequence:(Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)I
            pop
        12: .line 100
      StackMap locals:
      StackMap stack:
            aload 1 /* packet */
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.database:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
        13: .line 101
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.collation:()Lio/vertx/mysqlclient/impl/MySQLCollation;
            astore 4 /* collation */
        start local 4 // io.vertx.mysqlclient.impl.MySQLCollation collation
        14: .line 102
            aload 4 /* collation */
            invokevirtual io.vertx.mysqlclient.impl.MySQLCollation.collationId:()I
            istore 5 /* collationId */
        start local 5 // int collationId
        15: .line 103
            aload 1 /* packet */
            iload 5 /* collationId */
            invokevirtual io.netty.buffer.ByteBuf.writeShortLE:(I)Lio/netty/buffer/ByteBuf;
            pop
        16: .line 105
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            ldc 524288
            iand
            ifeq 18
        17: .line 106
            aload 1 /* packet */
            ldc "mysql_native_password"
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.vertx.mysqlclient.impl.util.BufferUtils.writeNullTerminatedString:(Lio/netty/buffer/ByteBuf;Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)V
        18: .line 108
      StackMap locals: io.vertx.mysqlclient.impl.MySQLCollation int
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.encoder:Lio/vertx/mysqlclient/impl/codec/MySQLEncoder;
            getfield io.vertx.mysqlclient.impl.codec.MySQLEncoder.clientCapabilitiesFlag:I
            ldc 1048576
            iand
            ifeq 22
        19: .line 109
            aload 0 /* this */
            getfield io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.cmd:Lio/vertx/sqlclient/impl/command/CommandBase;
            checkcast io.vertx.mysqlclient.impl.command.ChangeUserCommand
            invokevirtual io.vertx.mysqlclient.impl.command.ChangeUserCommand.connectionAttributes:()Ljava/util/Map;
            astore 6 /* clientConnectionAttributes */
        start local 6 // java.util.Map clientConnectionAttributes
        20: .line 110
            aload 6 /* clientConnectionAttributes */
            ifnull 22
        21: .line 111
            aload 0 /* this */
            aload 6 /* clientConnectionAttributes */
            aload 1 /* packet */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.encodeConnectionAttributes:(Ljava/util/Map;Lio/netty/buffer/ByteBuf;)V
        end local 6 // java.util.Map clientConnectionAttributes
        22: .line 116
      StackMap locals:
      StackMap stack:
            aload 1 /* packet */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            iload 2 /* packetStartIdx */
            isub
            iconst_4
            isub
            istore 6 /* lenOfPayload */
        start local 6 // int lenOfPayload
        23: .line 117
            aload 1 /* packet */
            iload 2 /* packetStartIdx */
            iload 6 /* lenOfPayload */
            invokevirtual io.netty.buffer.ByteBuf.setMediumLE:(II)Lio/netty/buffer/ByteBuf;
            pop
        24: .line 119
            aload 0 /* this */
            aload 1 /* packet */
            iload 6 /* lenOfPayload */
            invokevirtual io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec.sendPacket:(Lio/netty/buffer/ByteBuf;I)V
        25: .line 120
            return
        end local 6 // int lenOfPayload
        end local 5 // int collationId
        end local 4 // io.vertx.mysqlclient.impl.MySQLCollation collation
        end local 3 // java.lang.String password
        end local 2 // int packetStartIdx
        end local 1 // io.netty.buffer.ByteBuf packet
        end local 0 // io.vertx.mysqlclient.impl.codec.ChangeUserCommandCodec this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   26     0                        this  Lio/vertx/mysqlclient/impl/codec/ChangeUserCommandCodec;
            1   26     1                      packet  Lio/netty/buffer/ByteBuf;
            2   26     2              packetStartIdx  I
            7   26     3                    password  Ljava/lang/String;
           14   26     4                   collation  Lio/vertx/mysqlclient/impl/MySQLCollation;
           15   26     5                 collationId  I
           20   22     6  clientConnectionAttributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           23   26     6                lenOfPayload  I
}
Signature: Lio/vertx/mysqlclient/impl/codec/AuthenticationCommandBaseCodec<Ljava/lang/Void;Lio/vertx/mysqlclient/impl/command/ChangeUserCommand;>;
SourceFile: "ChangeUserCommandCodec.java"