public class io.vertx.mysqlclient.impl.MySQLConnectionUriParser
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.mysqlclient.impl.MySQLConnectionUriParser
  super_class: java.lang.Object
{
  private static final java.lang.String SCHEME_DESIGNATOR_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "mysql://"

  private static final java.lang.String USER_INFO_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "((?<userinfo>[a-zA-Z0-9\\-._~%!]+(:[a-zA-Z0-9\\-._~%!]*)?)@)?"

  private static final java.lang.String NET_LOCATION_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(?<host>[0-9.]+|\\[[a-zA-Z0-9:]+]|[a-zA-Z0-9\\-._~%]+)"

  private static final java.lang.String PORT_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(:(?<port>\\d+))?"

  private static final java.lang.String SCHEMA_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(/(?<schema>[a-zA-Z0-9\\-._~%!]+))?"

  private static final java.lang.String ATTRIBUTES_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(\\?(?<attributes>.*))?"

  private static final java.lang.String FULL_URI_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "^mysql://((?<userinfo>[a-zA-Z0-9\\-._~%!]+(:[a-zA-Z0-9\\-._~%!]*)?)@)?(?<host>[0-9.]+|\\[[a-zA-Z0-9:]+]|[a-zA-Z0-9\\-._~%]+)(:(?<port>\\d+))?(/(?<schema>[a-zA-Z0-9\\-._~%!]+))?(\\?(?<attributes>.*))?$"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mysqlclient.impl.MySQLConnectionUriParser this
         0: .line 19
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.vertx.mysqlclient.impl.MySQLConnectionUriParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mysqlclient/impl/MySQLConnectionUriParser;

  public static io.vertx.core.json.JsonObject parse(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String connectionUri
         0: .line 39
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
            astore 1 /* configuration */
        start local 1 // io.vertx.core.json.JsonObject configuration
         1: .line 40
            aload 0 /* connectionUri */
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.doParse:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         2: .line 41
            aload 1 /* configuration */
         3: areturn
        end local 1 // io.vertx.core.json.JsonObject configuration
         4: .line 42
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         5: .line 43
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot parse invalid connection URI: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* connectionUri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.lang.String connectionUri
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0  connectionUri  Ljava/lang/String;
            1    4     1  configuration  Lio/vertx/core/json/JsonObject;
            5    6     1              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    MethodParameters:
               Name  Flags
      connectionUri  

  private static void doParse(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String connectionUri
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 49
            ldc "^mysql://((?<userinfo>[a-zA-Z0-9\\-._~%!]+(:[a-zA-Z0-9\\-._~%!]*)?)@)?(?<host>[0-9.]+|\\[[a-zA-Z0-9:]+]|[a-zA-Z0-9\\-._~%]+)(:(?<port>\\d+))?(/(?<schema>[a-zA-Z0-9\\-._~%!]+))?(\\?(?<attributes>.*))?$"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            astore 2 /* pattern */
        start local 2 // java.util.regex.Pattern pattern
         1: .line 50
            aload 2 /* pattern */
            aload 0 /* connectionUri */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        start local 3 // java.util.regex.Matcher matcher
         2: .line 52
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 9
         3: .line 54
            aload 3 /* matcher */
            ldc "userinfo"
            invokevirtual java.util.regex.Matcher.group:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseUserAndPassword:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         4: .line 57
            aload 3 /* matcher */
            ldc "host"
            invokevirtual java.util.regex.Matcher.group:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseHost:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         5: .line 60
            aload 3 /* matcher */
            ldc "port"
            invokevirtual java.util.regex.Matcher.group:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parsePort:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         6: .line 63
            aload 3 /* matcher */
            ldc "schema"
            invokevirtual java.util.regex.Matcher.group:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseSchemaName:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         7: .line 66
            aload 3 /* matcher */
            ldc "attributes"
            invokevirtual java.util.regex.Matcher.group:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseAttributes:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         8: .line 68
            goto 10
         9: .line 69
      StackMap locals: java.util.regex.Pattern java.util.regex.Matcher
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Wrong syntax of connection URI"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 71
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.regex.Matcher matcher
        end local 2 // java.util.regex.Pattern pattern
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String connectionUri
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0  connectionUri  Ljava/lang/String;
            0   11     1  configuration  Lio/vertx/core/json/JsonObject;
            1   11     2        pattern  Ljava/util/regex/Pattern;
            2   11     3        matcher  Ljava/util/regex/Matcher;
    MethodParameters:
               Name  Flags
      connectionUri  
      configuration  

  private static void parseUserAndPassword(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.String userInfo
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 74
            aload 0 /* userInfo */
            ifnull 1
            aload 0 /* userInfo */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 75
      StackMap locals:
      StackMap stack:
            return
         2: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* userInfo */
            ldc ":"
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.occurExactlyOnce:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 11
         3: .line 78
            aload 0 /* userInfo */
            ldc ":"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 2 /* index */
        start local 2 // int index
         4: .line 79
            aload 0 /* userInfo */
            iconst_0
            iload 2 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* user */
        start local 3 // java.lang.String user
         5: .line 80
            aload 3 /* user */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 7
         6: .line 81
            new java.lang.IllegalArgumentException
            dup
            ldc "Can not only specify the password without a concrete user"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 83
      StackMap locals: int java.lang.String
      StackMap stack:
            aload 0 /* userInfo */
            iload 2 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* password */
        start local 4 // java.lang.String password
         8: .line 84
            aload 1 /* configuration */
            ldc "user"
            aload 3 /* user */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         9: .line 85
            aload 1 /* configuration */
            ldc "password"
            aload 4 /* password */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        end local 4 // java.lang.String password
        end local 3 // java.lang.String user
        end local 2 // int index
        10: .line 86
            goto 15
      StackMap locals:
      StackMap stack:
        11: aload 0 /* userInfo */
            ldc ":"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 14
        12: .line 87
            aload 1 /* configuration */
            ldc "user"
            aload 0 /* userInfo */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        13: .line 88
            goto 15
        14: .line 89
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Can not use multiple delimiters to delimit user and password"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 91
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String userInfo
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0       userInfo  Ljava/lang/String;
            0   16     1  configuration  Lio/vertx/core/json/JsonObject;
            4   10     2          index  I
            5   10     3           user  Ljava/lang/String;
            8   10     4       password  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      userInfo       
      configuration  

  private static void parseHost(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String hostInfo
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 94
            aload 0 /* hostInfo */
            ifnull 1
            aload 0 /* hostInfo */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 95
      StackMap locals:
      StackMap stack:
            return
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* hostInfo */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseHostValue:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
         3: .line 98
            return
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String hostInfo
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0       hostInfo  Ljava/lang/String;
            0    4     1  configuration  Lio/vertx/core/json/JsonObject;
    MethodParameters:
               Name  Flags
      hostInfo       
      configuration  

  private static void parsePort(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String portInfo
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 101
            aload 0 /* portInfo */
            ifnull 1
            aload 0 /* portInfo */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 102
      StackMap locals:
      StackMap stack:
            return
         2: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* portInfo */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* port */
        start local 2 // int port
         3: .line 107
            goto 6
        end local 2 // int port
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
         4: pop
         5: .line 108
            new java.lang.IllegalArgumentException
            dup
            ldc "The port must be a valid integer"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        start local 2 // int port
         6: .line 110
      StackMap locals: int
      StackMap stack:
            iload 2 /* port */
            ldc 65535
            if_icmpgt 7
            iload 2 /* port */
            ifgt 8
         7: .line 111
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "The port can only range in 1-65535"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "port"
            iload 2 /* port */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Integer;)Lio/vertx/core/json/JsonObject;
            pop
         9: .line 114
            return
        end local 2 // int port
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String portInfo
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0       portInfo  Ljava/lang/String;
            0   10     1  configuration  Lio/vertx/core/json/JsonObject;
            3    4     2           port  I
            6   10     2           port  I
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NumberFormatException
    MethodParameters:
               Name  Flags
      portInfo       
      configuration  

  private static void parseSchemaName(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String schemaInfo
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 117
            aload 0 /* schemaInfo */
            ifnull 1
            aload 0 /* schemaInfo */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 118
      StackMap locals:
      StackMap stack:
            return
         2: .line 120
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "database"
            aload 0 /* schemaInfo */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         3: .line 121
            return
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String schemaInfo
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0     schemaInfo  Ljava/lang/String;
            0    4     1  configuration  Lio/vertx/core/json/JsonObject;
    MethodParameters:
               Name  Flags
      schemaInfo     
      configuration  

  private static void parseAttributes(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=2
        start local 0 // java.lang.String attributesInfo
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 124
            aload 0 /* attributesInfo */
            ifnull 1
            aload 0 /* attributesInfo */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 125
      StackMap locals:
      StackMap stack:
            return
         2: .line 127
      StackMap locals:
      StackMap stack:
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* properties */
        start local 2 // java.util.Map properties
         3: .line 128
            aload 0 /* attributesInfo */
            ldc "&"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 33
      StackMap locals: java.lang.String io.vertx.core.json.JsonObject java.util.Map top int int java.lang.String[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* parameterPair */
        start local 3 // java.lang.String parameterPair
         5: .line 129
            aload 3 /* parameterPair */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 7
         6: .line 130
            goto 32
         7: .line 132
      StackMap locals: java.lang.String io.vertx.core.json.JsonObject java.util.Map java.lang.String int int java.lang.String[]
      StackMap stack:
            aload 3 /* parameterPair */
            ldc "="
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 7 /* indexOfDelimiter */
        start local 7 // int indexOfDelimiter
         8: .line 133
            iload 7 /* indexOfDelimiter */
            ifge 10
         9: .line 134
            new java.lang.IllegalArgumentException
            dup
            ldc "Missing delimiter '=' of parameters \"%s\" in the part \"%s\""
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* attributesInfo */
            aastore
            dup
            iconst_1
            aload 3 /* parameterPair */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 136
      StackMap locals: int
      StackMap stack:
            aload 3 /* parameterPair */
            iconst_0
            iload 7 /* indexOfDelimiter */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 8 /* key */
        start local 8 // java.lang.String key
        11: .line 137
            aload 3 /* parameterPair */
            iload 7 /* indexOfDelimiter */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.decodeUrl:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* value */
        start local 9 // java.lang.String value
        12: .line 138
            aload 8 /* key */
            dup
            astore 10
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 6
           -907987551: 13
           -897048717: 14
              3208616: 15
              3446913: 16
              3599307: 17
           1216985755: 18
              default: 31
          }
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
        13: aload 10
            ldc "schema"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
            goto 31
      StackMap locals:
      StackMap stack:
        14: aload 10
            ldc "socket"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 27
            goto 31
      StackMap locals:
      StackMap stack:
        15: aload 10
            ldc "host"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            goto 31
      StackMap locals:
      StackMap stack:
        16: aload 10
            ldc "port"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 25
            goto 31
      StackMap locals:
      StackMap stack:
        17: aload 10
            ldc "user"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 19
            goto 31
      StackMap locals:
      StackMap stack:
        18: aload 10
            ldc "password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
            goto 31
        19: .line 141
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "user"
            aload 9 /* value */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        20: .line 142
            goto 32
        21: .line 144
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "password"
            aload 9 /* value */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        22: .line 145
            goto 32
        23: .line 147
      StackMap locals:
      StackMap stack:
            aload 9 /* value */
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parseHostValue:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
        24: .line 148
            goto 32
        25: .line 150
      StackMap locals:
      StackMap stack:
            aload 9 /* value */
            aload 1 /* configuration */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.parsePort:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
        26: .line 151
            goto 32
        27: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "socket"
            aload 9 /* value */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        28: .line 154
            goto 32
        29: .line 156
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "database"
            aload 9 /* value */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        30: .line 157
            goto 32
        31: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            aload 8 /* key */
            aload 9 /* value */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
        end local 9 // java.lang.String value
        end local 8 // java.lang.String key
        end local 7 // int indexOfDelimiter
        end local 3 // java.lang.String parameterPair
        32: .line 128
      StackMap locals: java.lang.String io.vertx.core.json.JsonObject java.util.Map top int int java.lang.String[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        33: iload 4
            iload 5
            if_icmplt 4
        34: .line 165
            aload 2 /* properties */
            invokeinterface java.util.Map.isEmpty:()Z
            ifne 36
        35: .line 166
            aload 1 /* configuration */
            ldc "properties"
            aload 2 /* properties */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            pop
        36: .line 168
      StackMap locals: java.lang.String io.vertx.core.json.JsonObject java.util.Map
      StackMap stack:
            return
        end local 2 // java.util.Map properties
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String attributesInfo
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   37     0    attributesInfo  Ljava/lang/String;
            0   37     1     configuration  Lio/vertx/core/json/JsonObject;
            3   37     2        properties  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            5   32     3     parameterPair  Ljava/lang/String;
            8   32     7  indexOfDelimiter  I
           11   32     8               key  Ljava/lang/String;
           12   32     9             value  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      attributesInfo  
      configuration   

  private static void parseHostValue(java.lang.String, io.vertx.core.json.JsonObject);
    descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // java.lang.String hostValue
        start local 1 // io.vertx.core.json.JsonObject configuration
         0: .line 171
            aload 0 /* hostValue */
            invokestatic io.vertx.mysqlclient.impl.MySQLConnectionUriParser.isRegardedAsIpv6Address:(Ljava/lang/String;)Z
            ifeq 3
         1: .line 172
            aload 1 /* configuration */
            ldc "host"
            aload 0 /* hostValue */
            iconst_1
            aload 0 /* hostValue */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         2: .line 173
            goto 4
         3: .line 174
      StackMap locals:
      StackMap stack:
            aload 1 /* configuration */
            ldc "host"
            aload 0 /* hostValue */
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
            pop
         4: .line 176
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.json.JsonObject configuration
        end local 0 // java.lang.String hostValue
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0      hostValue  Ljava/lang/String;
            0    5     1  configuration  Lio/vertx/core/json/JsonObject;
    MethodParameters:
               Name  Flags
      hostValue      
      configuration  

  private static boolean isRegardedAsIpv6Address(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String hostAddress
         0: .line 179
            aload 0 /* hostAddress */
            ldc "["
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 1
            aload 0 /* hostAddress */
            ldc "]"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.String hostAddress
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0  hostAddress  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      hostAddress  

  private static java.lang.String decodeUrl(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String url
         0: .line 184
            aload 0 /* url */
            ldc "UTF-8"
            invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
         1: areturn
         2: .line 185
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            pop
         3: .line 186
            new java.lang.IllegalArgumentException
            dup
            ldc "The connection uri contains unknown characters that can not be resolved."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String url
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   url  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.UnsupportedEncodingException
    MethodParameters:
      Name  Flags
      url   

  private static boolean occurExactlyOnce(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String uri
        start local 1 // java.lang.String character
         0: .line 191
            aload 0 /* uri */
            aload 1 /* character */
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 1
            aload 0 /* uri */
            aload 1 /* character */
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            aload 0 /* uri */
            aload 1 /* character */
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.String character
        end local 0 // java.lang.String uri
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0        uri  Ljava/lang/String;
            0    2     1  character  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      uri        
      character  
}
SourceFile: "MySQLConnectionUriParser.java"