docs: public byte[] toBytes() throws IOException {
          ByteArrayOutputStream out = new ByteArrayOutputStream();
          // 1. write client_flags
          ByteHelper.writeUnsignedIntLittleEndian(clientCapability, out); // remove
          // client_interactive
          // feature
  
          // 2. write max_packet_size
          ByteHelper.writeUnsignedIntLittleEndian(MSC.MAX_PACKET_LENGTH, out);
          // 3. write charset_number
          out.write(this.charsetNumber);
          // 4. write (filler) always 0x00...
          out.write(new byte[23]);
          // 5. write (Null-Terminated String) user
          ByteHelper.writeNullTerminatedString(getUsername(), out);
          // 6. write (Length Coded Binary) scramble_buff (1 + x bytes)
          if (StringUtils.isEmpty(getPassword())) {
              out.write(0x00);
          } else {
              try {
                  byte[] encryptedPassword = MySQLPasswordEncrypter.scramble411(getPassword().getBytes(), scrumbleBuff);
                  ByteHelper.writeBinaryCodedLengthBytes(encryptedPassword, out);
              } catch (NoSuchAlgorithmException e) {
                  throw new RuntimeException("can't encrypt password that will be sent to MySQL server.", e);
              }
          }
          // 7 . (Null-Terminated String) databasename (optional)
          if (getDatabaseName() != null) {
              ByteHelper.writeNullTerminatedString(getDatabaseName(), out);
          }
          // 8 . (Null-Terminated String) auth plugin name (optional)
          if (getAuthPluginName() != null) {
              ByteHelper.writeNullTerminated(getAuthPluginName(), out);
          }
          // end write
          return out.toByteArray();
      }