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 void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.util.URLUtils$QueryStringParser this
         0: .line 230
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.undertow.util.URLUtils$QueryStringParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/util/URLUtils$QueryStringParser;

  void 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)V
    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 233
            iconst_0
            istore 6 /* count */
        start local 6 // int count
         1: .line 235
            iconst_0
            istore 7 /* stringStart */
        start local 7 // int stringStart
         2: .line 236
            aconst_null
            astore 8 /* attrName */
        start local 8 // java.lang.String attrName
         3: .line 237
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         4: goto 21
         5: .line 238
      StackMap locals: io.undertow.util.URLUtils$QueryStringParser java.lang.String io.undertow.server.HttpServerExchange java.lang.String int int int int java.lang.String int
      StackMap stack:
            aload 1 /* string */
            iload 9 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 10 /* c */
        start local 10 // char c
         6: .line 239
            iload 10 /* c */
            bipush 61
            if_icmpne 10
            aload 8 /* attrName */
            ifnonnull 10
         7: .line 240
            aload 1 /* string */
            iload 7 /* stringStart */
            iload 9 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 8 /* attrName */
         8: .line 241
            iload 9 /* i */
            iconst_1
            iadd
            istore 7 /* stringStart */
         9: .line 242
            goto 20
      StackMap locals: int
      StackMap stack:
        10: iload 10 /* c */
            bipush 38
            if_icmpne 20
        11: .line 243
            aload 8 /* attrName */
            ifnull 15
        12: .line 244
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 8 /* 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 7 /* stringStart */
            iload 9 /* 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 245
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 18
        14: .line 246
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        15: .line 249
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 7 /* stringStart */
            iload 9 /* 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 250
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 18
        17: .line 251
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        18: .line 254
      StackMap locals:
      StackMap stack:
            iload 9 /* i */
            iconst_1
            iadd
            istore 7 /* stringStart */
        19: .line 255
            aconst_null
            astore 8 /* attrName */
        end local 10 // char c
        20: .line 237
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 9 /* i */
            aload 1 /* string */
            invokevirtual java.lang.String.length:()I
            if_icmplt 5
        end local 9 // int i
        22: .line 258
            aload 8 /* attrName */
            ifnull 26
        23: .line 259
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 8 /* 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 7 /* stringStart */
            aload 1 /* string */
            invokevirtual java.lang.String.length:()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
        24: .line 260
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 32
        25: .line 261
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        26: .line 263
      StackMap locals:
      StackMap stack:
            aload 1 /* string */
            invokevirtual java.lang.String.length:()I
            iload 7 /* stringStart */
            if_icmpeq 32
        27: .line 264
            aload 0 /* this */
            aload 2 /* exchange */
            aload 0 /* this */
            aload 3 /* charset */
            aload 1 /* string */
            iload 7 /* stringStart */
            aload 1 /* string */
            invokevirtual java.lang.String.length:()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
        28: .line 265
            iinc 6 /* count */ 1
            iload 6 /* count */
            iload 5 /* max */
            if_icmple 32
        29: .line 266
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iload 5 /* max */
            invokeinterface io.undertow.UndertowMessages.tooManyParameters:(I)Lio/undertow/util/ParameterLimitException;
            athrow
        end local 8 // java.lang.String attrName
        end local 7 // int stringStart
        30: .line 269
      StackMap locals: io.undertow.util.URLUtils$QueryStringParser java.lang.String io.undertow.server.HttpServerExchange java.lang.String int int int
      StackMap stack: java.io.UnsupportedEncodingException
            astore 7 /* e */
        start local 7 // java.io.UnsupportedEncodingException e
        31: .line 270
            new java.lang.RuntimeException
            dup
            aload 7 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.UnsupportedEncodingException e
        32: .line 272
      StackMap locals:
      StackMap stack:
            return
        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   33     0         this  Lio/undertow/util/URLUtils$QueryStringParser;
            0   33     1       string  Ljava/lang/String;
            0   33     2     exchange  Lio/undertow/server/HttpServerExchange;
            0   33     3      charset  Ljava/lang/String;
            0   33     4     doDecode  Z
            0   33     5          max  I
            1   33     6        count  I
            2   30     7  stringStart  I
            3   30     8     attrName  Ljava/lang/String;
            4   22     9            i  I
            6   20    10            c  C
           31   32     7            e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           1    30      30  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 275
            iload 3 /* doDecode */
            ifeq 2
         1: .line 276
            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 278
      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