abstract class io.undertow.util.URLUtils$QueryStringParser
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: io.undertow.util.URLUtils$QueryStringParser
  super_class: java.lang.Object
{
  private final char separator;
    descriptor: C
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean parseUntilSeparator;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(char, boolean);
    descriptor: (CZ)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.undertow.util.URLUtils$QueryStringParser this
        start local 1 // char separator
        start local 2 // boolean parseUntilSeparator
         0: .line 244
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 245
            aload 0 /* this */
            iload 1 /* separator */
            putfield io.undertow.util.URLUtils$QueryStringParser.separator:C
         2: .line 246
            aload 0 /* this */
            iload 2 /* parseUntilSeparator */
            putfield io.undertow.util.URLUtils$QueryStringParser.parseUntilSeparator:Z
         3: .line 247
            return
        end local 2 // boolean parseUntilSeparator
        end local 1 // char separator
        end local 0 // io.undertow.util.URLUtils$QueryStringParser this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lio/undertow/util/URLUtils$QueryStringParser;
            0    4     1            separator  C
            0    4     2  parseUntilSeparator  Z
    MethodParameters:
                     Name  Flags
      separator            final
      parseUntilSeparator  final

  int parse(java.lang.String, io.undertow.server.HttpServerExchange, java.lang.String, boolean, int);
    descriptor: (Ljava/lang/String;Lio/undertow/server/HttpServerExchange;Ljava/lang/String;ZI)I
    flags: (0x0000) 
    Code:
      stack=8, locals=11, args_size=6
        start local 0 // io.undertow.util.URLUtils$QueryStringParser this
        start local 1 // java.lang.String string
        start local 2 // io.undertow.server.HttpServerExchange exchange
        start local 3 // java.lang.String charset
        start local 4 // boolean doDecode
        start local 5 // int max
         0: .line 250
            iconst_0
            istore 6 /* count */
        start local 6 // int count
         1: .line 251
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         2: .line 253
            iconst_0
            istore 8 /* stringStart */
        start local 8 // int stringStart
         3: .line 254
            aconst_null
            astore 9 /* attrName */
        start local 9 // java.lang.String attrName
         4: .line 255
            iconst_0
            istore 7 /* i */
            goto 24
         5: .line 256
      StackMap locals: io.undertow.util.URLUtils$QueryStringParser java.lang.String io.undertow.server.HttpServerExchange java.lang.String int int int int int java.lang.String
      StackMap stack:
            aload 1 /* string */
            iload 7 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 10 /* c */
        start local 10 // char c
         6: .line 257
            iload 10 /* c */
            bipush 61
            if_icmpne 10
            aload 9 /* attrName */
            ifnonnull 10
         7: .line 258
            aload 1 /* string */
            iload 8 /* stringStart */
            iload 7 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* attrName */
         8: .line 259
            iload 7 /* i */
            iconst_1
            iadd
            istore 8 /* stringStart */
         9: .line 260
            goto 23
      StackMap locals: int
      StackMap stack:
        10: iload 10 /* c */
            aload 0 /* this */
            getfield io.undertow.util.URLUtils$QueryStringParser.separator:C
            if_icmpne 21
        11: .line 261
            aload 9 /* attrName */
            ifnull 15
        12: .line 262
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 9 /* attrName */
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 8 /* stringStart */
            iload 7 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.handle:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
        13: .line 263
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 18
        14: .line 264
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        15: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 8 /* stringStart */
            iload 7 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            ldc ""
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.handle:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
        16: .line 268
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 18
        17: .line 269
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        18: .line 272
      StackMap locals:
      StackMap stack:
            iload 7 /* i */
            iconst_1
            iadd
            istore 8 /* stringStart */
        19: .line 273
            aconst_null
            astore 9 /* attrName */
        20: .line 274
            goto 23
      StackMap locals:
      StackMap stack:
        21: aload 0 /* this */
            getfield io.undertow.util.URLUtils$QueryStringParser.parseUntilSeparator:Z
            ifeq 23
            iload 10 /* c */
            bipush 63
            if_icmpeq 25
            iload 10 /* c */
            bipush 47
            if_icmpne 23
        22: .line 275
            goto 25
        end local 10 // char c
        23: .line 255
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 7 /* i */
            aload 1 /* string */
            invokevirtual java.lang.String.length:()I
            if_icmplt 5
        25: .line 278
      StackMap locals:
      StackMap stack:
            aload 9 /* attrName */
            ifnull 29
        26: .line 279
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 9 /* attrName */
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 8 /* stringStart */
            iload 7 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.handle:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
        27: .line 280
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 35
        28: .line 281
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        29: .line 283
      StackMap locals:
      StackMap stack:
            aload 1 /* string */
            invokevirtual java.lang.String.length:()I
            iload 8 /* stringStart */
            if_icmpeq 35
        30: .line 284
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 8 /* stringStart */
            iload 7 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            iload 4 /* doDecode */
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.decode:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            ldc ""
            invokevirtual io.undertow.util.URLUtils$QueryStringParser.handle:(Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
        31: .line 285
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 35
        32: .line 286
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        end local 9 // java.lang.String attrName
        end local 8 // int stringStart
        33: .line 289
      StackMap locals: io.undertow.util.URLUtils$QueryStringParser java.lang.String io.undertow.server.HttpServerExchange java.lang.String int int int int
      StackMap stack: java.io.UnsupportedEncodingException
            astore 8 /* e */
        start local 8 // java.io.UnsupportedEncodingException e
        34: .line 290
            new java.lang.RuntimeException
            dup
            aload 8 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 8 // java.io.UnsupportedEncodingException e
        35: .line 292
      StackMap locals:
      StackMap stack:
            iload 7 /* i */
            ireturn
        end local 7 // int i
        end local 6 // int count
        end local 5 // int max
        end local 4 // boolean doDecode
        end local 3 // java.lang.String charset
        end local 2 // io.undertow.server.HttpServerExchange exchange
        end local 1 // java.lang.String string
        end local 0 // io.undertow.util.URLUtils$QueryStringParser this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   36     0         this  Lio/undertow/util/URLUtils$QueryStringParser;
            0   36     1       string  Ljava/lang/String;
            0   36     2     exchange  Lio/undertow/server/HttpServerExchange;
            0   36     3      charset  Ljava/lang/String;
            0   36     4     doDecode  Z
            0   36     5          max  I
            1   36     6        count  I
            2   36     7            i  I
            3   33     8  stringStart  I
            4   33     9     attrName  Ljava/lang/String;
            6   23    10            c  C
           34   35     8            e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           2    33      33  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws io.undertow.util.ParameterLimitException
    MethodParameters:
          Name  Flags
      string    final
      exchange  final
      charset   final
      doDecode  final
      max       

  private java.lang.String decode(java.lang.String, java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // io.undertow.util.URLUtils$QueryStringParser this
        start local 1 // java.lang.String charset
        start local 2 // java.lang.String attrName
        start local 3 // boolean doDecode
         0: .line 296
            iload 3 /* doDecode */
            ifeq 2
         1: .line 297
            aload 2 /* attrName */
            aload 1 /* charset */
            iconst_1
            iconst_1
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            invokestatic io.undertow.util.URLUtils.decode:(Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/StringBuilder;)Ljava/lang/String;
            areturn
         2: .line 299
      StackMap locals:
      StackMap stack:
            aload 2 /* attrName */
            areturn
        end local 3 // boolean doDecode
        end local 2 // java.lang.String attrName
        end local 1 // java.lang.String charset
        end local 0 // io.undertow.util.URLUtils$QueryStringParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lio/undertow/util/URLUtils$QueryStringParser;
            0    3     1   charset  Ljava/lang/String;
            0    3     2  attrName  Ljava/lang/String;
            0    3     3  doDecode  Z
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
          Name  Flags
      charset   
      attrName  
      doDecode  final

  abstract void handle(io.undertow.server.HttpServerExchange, java.lang.String, java.lang.String);
    descriptor: (Lio/undertow/server/HttpServerExchange;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      exchange  final
      key       final
      value     final
}
SourceFile: "URLUtils.java"
NestHost: io.undertow.util.URLUtils
InnerClasses:
  private abstract QueryStringParser = io.undertow.util.URLUtils$QueryStringParser of io.undertow.util.URLUtils