abstract class io.undertow.protocols.http2.Http2HeaderBlockParser extends io.undertow.protocols.http2.Http2PushBackParser implements io.undertow.protocols.http2.HpackDecoder$HeaderEmitter
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: io.undertow.protocols.http2.Http2HeaderBlockParser
  super_class: io.undertow.protocols.http2.Http2PushBackParser
{
  private final io.undertow.util.HeaderMap headerMap;
    descriptor: Lio/undertow/util/HeaderMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean beforeHeadersHandled;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final io.undertow.protocols.http2.HpackDecoder decoder;
    descriptor: Lio/undertow/protocols/http2/HpackDecoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int frameRemaining;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private boolean invalid;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean processingPseudoHeaders;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  private final int maxHeaders;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int maxHeaderListSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int currentPadding;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final int streamId;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int headerSize;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static final java.util.Set<io.undertow.util.HttpString> SERVER_HEADERS;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lio/undertow/util/HttpString;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 62
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 0 /* server */
        start local 0 // java.util.Set server
         1: .line 63
            aload 0 /* server */
            getstatic io.undertow.protocols.http2.Http2Channel.METHOD:Lio/undertow/util/HttpString;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 64
            aload 0 /* server */
            getstatic io.undertow.protocols.http2.Http2Channel.AUTHORITY:Lio/undertow/util/HttpString;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 65
            aload 0 /* server */
            getstatic io.undertow.protocols.http2.Http2Channel.SCHEME:Lio/undertow/util/HttpString;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 66
            aload 0 /* server */
            getstatic io.undertow.protocols.http2.Http2Channel.PATH:Lio/undertow/util/HttpString;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 67
            aload 0 /* server */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            putstatic io.undertow.protocols.http2.Http2HeaderBlockParser.SERVER_HEADERS:Ljava/util/Set;
        end local 0 // java.util.Set server
         6: .line 68
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    6     0  server  Ljava/util/Set<Lio/undertow/util/HttpString;>;

  void <init>(int, io.undertow.protocols.http2.HpackDecoder, boolean, int, int, int);
    descriptor: (ILio/undertow/protocols/http2/HpackDecoder;ZIII)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=7
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
        start local 1 // int frameLength
        start local 2 // io.undertow.protocols.http2.HpackDecoder decoder
        start local 3 // boolean client
        start local 4 // int maxHeaders
        start local 5 // int streamId
        start local 6 // int maxHeaderListSize
         0: .line 71
            aload 0 /* this */
            iload 1 /* frameLength */
            invokespecial io.undertow.protocols.http2.Http2PushBackParser.<init>:(I)V
         1: .line 43
            aload 0 /* this */
            new io.undertow.util.HeaderMap
            dup
            invokespecial io.undertow.util.HeaderMap.<init>:()V
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerMap:Lio/undertow/util/HeaderMap;
         2: .line 44
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.beforeHeadersHandled:Z
         3: .line 47
            aload 0 /* this */
            iconst_m1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
         4: .line 48
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
         5: .line 49
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.processingPseudoHeaders:Z
         6: .line 72
            aload 0 /* this */
            aload 2 /* decoder */
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.decoder:Lio/undertow/protocols/http2/HpackDecoder;
         7: .line 73
            aload 0 /* this */
            iload 3 /* client */
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.client:Z
         8: .line 74
            aload 0 /* this */
            iload 4 /* maxHeaders */
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaders:I
         9: .line 75
            aload 0 /* this */
            iload 5 /* streamId */
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.streamId:I
        10: .line 76
            aload 0 /* this */
            iload 6 /* maxHeaderListSize */
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaderListSize:I
        11: .line 77
            return
        end local 6 // int maxHeaderListSize
        end local 5 // int streamId
        end local 4 // int maxHeaders
        end local 3 // boolean client
        end local 2 // io.undertow.protocols.http2.HpackDecoder decoder
        end local 1 // int frameLength
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;
            0   12     1        frameLength  I
            0   12     2            decoder  Lio/undertow/protocols/http2/HpackDecoder;
            0   12     3             client  Z
            0   12     4         maxHeaders  I
            0   12     5           streamId  I
            0   12     6  maxHeaderListSize  I
    MethodParameters:
                   Name  Flags
      frameLength        
      decoder            
      client             
      maxHeaders         
      streamId           
      maxHeaderListSize  

  protected void handleData(java.nio.ByteBuffer, io.undertow.protocols.http2.Http2FrameHeaderParser);
    descriptor: (Ljava/nio/ByteBuffer;Lio/undertow/protocols/http2/Http2FrameHeaderParser;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
        start local 1 // java.nio.ByteBuffer resource
        start local 2 // io.undertow.protocols.http2.Http2FrameHeaderParser header
         0: .line 81
            aload 2 /* header */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_4
            invokestatic org.xnio.Bits.anyAreClear:(II)Z
            istore 3 /* continuationFramesComing */
        start local 3 // boolean continuationFramesComing
         1: .line 82
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iconst_m1
            if_icmpne 3
         2: .line 83
            aload 0 /* this */
            aload 2 /* header */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.length:I
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
         3: .line 85
      StackMap locals: int
      StackMap stack:
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            if_icmpge 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 4 /* moreDataThisFrame */
        start local 4 // boolean moreDataThisFrame
         6: .line 86
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 5 /* pos */
        start local 5 // int pos
         7: .line 87
            iconst_0
            istore 6 /* readInBeforeHeader */
        start local 6 // int readInBeforeHeader
         8: .line 89
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.beforeHeadersHandled:Z
            ifne 15
         9: .line 90
            aload 0 /* this */
            aload 1 /* resource */
            aload 2 /* header */
            invokevirtual io.undertow.protocols.http2.Http2HeaderBlockParser.handleBeforeHeader:(Ljava/nio/ByteBuffer;Lio/undertow/protocols/http2/Http2FrameHeaderParser;)Z
            ifne 13
        10: .line 129
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 5 /* pos */
            isub
            istore 10 /* used */
        start local 10 // int used
        11: .line 130
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iload 10 /* used */
            isub
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
        end local 10 // int used
        12: .line 91
            return
        13: .line 93
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2HeaderBlockParser.getPaddingLength:()I
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.currentPadding:I
        14: .line 94
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 5 /* pos */
            isub
            istore 6 /* readInBeforeHeader */
        15: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.beforeHeadersHandled:Z
        16: .line 97
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.decoder:Lio/undertow/protocols/http2/HpackDecoder;
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.HpackDecoder.setHeaderEmitter:(Lio/undertow/protocols/http2/HpackDecoder$HeaderEmitter;)V
        17: .line 98
            iconst_m1
            istore 7 /* oldLimit */
        start local 7 // int oldLimit
        18: .line 99
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.currentPadding:I
            ifle 25
        19: .line 100
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iload 6 /* readInBeforeHeader */
            isub
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.currentPadding:I
            isub
            istore 8 /* actualData */
        start local 8 // int actualData
        20: .line 101
            iload 8 /* actualData */
            ifge 22
        21: .line 102
            new io.undertow.protocols.http2.ConnectionErrorException
            dup
            iconst_1
            invokespecial io.undertow.protocols.http2.ConnectionErrorException.<init>:(I)V
            athrow
        22: .line 104
      StackMap locals: int int
      StackMap stack:
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 8 /* actualData */
            if_icmple 25
        23: .line 105
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 7 /* oldLimit */
        24: .line 106
            aload 1 /* resource */
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 8 /* actualData */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 8 // int actualData
        25: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.decoder:Lio/undertow/protocols/http2/HpackDecoder;
            aload 1 /* resource */
            iload 4 /* moreDataThisFrame */
            ifne 26
            iload 3 /* continuationFramesComing */
            ifne 26
            iconst_0
            goto 27
      StackMap locals: io.undertow.protocols.http2.Http2HeaderBlockParser java.nio.ByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser int int int int int
      StackMap stack: io.undertow.protocols.http2.HpackDecoder java.nio.ByteBuffer
        26: iconst_1
      StackMap locals: io.undertow.protocols.http2.Http2HeaderBlockParser java.nio.ByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser int int int int int
      StackMap stack: io.undertow.protocols.http2.HpackDecoder java.nio.ByteBuffer int
        27: invokevirtual io.undertow.protocols.http2.HpackDecoder.decode:(Ljava/nio/ByteBuffer;Z)V
        28: .line 111
            goto 31
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.HpackException
        29: astore 8 /* e */
        start local 8 // io.undertow.protocols.http2.HpackException e
        30: .line 112
            new io.undertow.protocols.http2.ConnectionErrorException
            dup
            aload 8 /* e */
            invokevirtual io.undertow.protocols.http2.HpackException.getCloseCode:()I
            aload 8 /* e */
            invokespecial io.undertow.protocols.http2.ConnectionErrorException.<init>:(ILjava/lang/Throwable;)V
            athrow
        end local 8 // io.undertow.protocols.http2.HpackException e
        31: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaders:I
            ifle 33
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerMap:Lio/undertow/util/HeaderMap;
            invokevirtual io.undertow.util.HeaderMap.size:()I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaders:I
            if_icmple 33
        32: .line 116
            new io.undertow.protocols.http2.StreamErrorException
            dup
            bipush 6
            invokespecial io.undertow.protocols.http2.StreamErrorException.<init>:(I)V
            athrow
        33: .line 118
      StackMap locals:
      StackMap stack:
            iload 7 /* oldLimit */
            iconst_m1
            if_icmpeq 46
        34: .line 119
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 40
        35: .line 120
            iload 7 /* oldLimit */
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.limit:()I
            isub
            istore 8 /* paddingInBuffer */
        start local 8 // int paddingInBuffer
        36: .line 121
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.currentPadding:I
            iload 8 /* paddingInBuffer */
            isub
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.currentPadding:I
        37: .line 122
            aload 1 /* resource */
            iload 7 /* oldLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        38: .line 123
            aload 1 /* resource */
            iload 7 /* oldLimit */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 8 // int paddingInBuffer
        39: .line 124
            goto 46
        40: .line 125
      StackMap locals:
      StackMap stack:
            aload 1 /* resource */
            iload 7 /* oldLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 7 // int oldLimit
        41: .line 128
            goto 46
      StackMap locals: io.undertow.protocols.http2.Http2HeaderBlockParser java.nio.ByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser int int int int
      StackMap stack: java.lang.Throwable
        42: astore 9
        43: .line 129
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 5 /* pos */
            isub
            istore 10 /* used */
        start local 10 // int used
        44: .line 130
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iload 10 /* used */
            isub
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
        end local 10 // int used
        45: .line 131
            aload 9
            athrow
        46: .line 129
      StackMap locals:
      StackMap stack:
            aload 1 /* resource */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 5 /* pos */
            isub
            istore 10 /* used */
        start local 10 // int used
        47: .line 130
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iload 10 /* used */
            isub
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
        end local 10 // int used
        48: .line 132
            return
        end local 6 // int readInBeforeHeader
        end local 5 // int pos
        end local 4 // boolean moreDataThisFrame
        end local 3 // boolean continuationFramesComing
        end local 2 // io.undertow.protocols.http2.Http2FrameHeaderParser header
        end local 1 // java.nio.ByteBuffer resource
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   49     0                      this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;
            0   49     1                  resource  Ljava/nio/ByteBuffer;
            0   49     2                    header  Lio/undertow/protocols/http2/Http2FrameHeaderParser;
            1   49     3  continuationFramesComing  Z
            6   49     4         moreDataThisFrame  Z
            7   49     5                       pos  I
            8   49     6        readInBeforeHeader  I
           18   41     7                  oldLimit  I
           20   25     8                actualData  I
           30   31     8                         e  Lio/undertow/protocols/http2/HpackException;
           36   39     8           paddingInBuffer  I
           11   12    10                      used  I
           44   45    10                      used  I
           47   48    10                      used  I
      Exception table:
        from    to  target  type
          25    28      29  Class io.undertow.protocols.http2.HpackException
           8    10      42  any
          13    42      42  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      resource  
      header    

  protected abstract boolean handleBeforeHeader(java.nio.ByteBuffer, io.undertow.protocols.http2.Http2FrameHeaderParser);
    descriptor: (Ljava/nio/ByteBuffer;Lio/undertow/protocols/http2/Http2FrameHeaderParser;)Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      resource  
      header    

  io.undertow.util.HeaderMap getHeaderMap();
    descriptor: ()Lio/undertow/util/HeaderMap;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
         0: .line 138
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerMap:Lio/undertow/util/HeaderMap;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;

  public void emitHeader(io.undertow.util.HttpString, java.lang.String, boolean);
    descriptor: (Lio/undertow/util/HttpString;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
        start local 1 // io.undertow.util.HttpString name
        start local 2 // java.lang.String value
        start local 3 // boolean neverIndex
         0: .line 143
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaderListSize:I
            ifle 4
         1: .line 144
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerSize:I
            aload 1 /* name */
            invokevirtual io.undertow.util.HttpString.length:()I
            aload 2 /* value */
            invokevirtual java.lang.String.length:()I
            iadd
            bipush 32
            iadd
            iadd
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerSize:I
         2: .line 145
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerSize:I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaderListSize:I
            if_icmple 4
         3: .line 146
            new io.undertow.protocols.http2.HpackException
            dup
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.headerBlockTooLarge:()Ljava/lang/String;
            iconst_1
            invokespecial io.undertow.protocols.http2.HpackException.<init>:(Ljava/lang/String;I)V
            athrow
         4: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaders:I
            ifle 6
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerMap:Lio/undertow/util/HeaderMap;
            invokevirtual io.undertow.util.HeaderMap.size:()I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.maxHeaders:I
            if_icmple 6
         5: .line 150
            return
         6: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.headerMap:Lio/undertow/util/HeaderMap;
            aload 1 /* name */
            aload 2 /* value */
            invokevirtual io.undertow.util.HeaderMap.add:(Lio/undertow/util/HttpString;Ljava/lang/String;)Lio/undertow/util/HeaderMap;
            pop
         7: .line 154
            aload 1 /* name */
            invokevirtual io.undertow.util.HttpString.length:()I
            ifne 9
         8: .line 155
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.invalidHeader:()Ljava/lang/IllegalArgumentException;
            athrow
         9: .line 157
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            getstatic io.undertow.util.Headers.TRANSFER_ENCODING:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
            ifeq 11
        10: .line 158
            new io.undertow.protocols.http2.HpackException
            dup
            iconst_1
            invokespecial io.undertow.protocols.http2.HpackException.<init>:(I)V
            athrow
        11: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            iconst_0
            invokevirtual io.undertow.util.HttpString.byteAt:(I)B
            bipush 58
            if_icmpne 20
        12: .line 161
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.client:Z
            ifeq 16
        13: .line 162
            aload 1 /* name */
            getstatic io.undertow.protocols.http2.Http2Channel.STATUS:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
            ifne 18
        14: .line 163
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
        15: .line 165
            goto 18
        16: .line 166
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2HeaderBlockParser.SERVER_HEADERS:Ljava/util/Set;
            aload 1 /* name */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 18
        17: .line 167
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
        18: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.processingPseudoHeaders:Z
            ifne 21
        19: .line 171
            new io.undertow.protocols.http2.HpackException
            dup
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            aload 1 /* name */
            invokeinterface io.undertow.UndertowMessages.pseudoHeaderInWrongOrder:(Lio/undertow/util/HttpString;)Ljava/lang/String;
            iconst_1
            invokespecial io.undertow.protocols.http2.HpackException.<init>:(Ljava/lang/String;I)V
            athrow
        20: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.processingPseudoHeaders:Z
        21: .line 176
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        22: goto 32
        23: .line 177
      StackMap locals: int
      StackMap stack:
            aload 1 /* name */
            iload 4 /* i */
            invokevirtual io.undertow.util.HttpString.byteAt:(I)B
            istore 5 /* c */
        start local 5 // byte c
        24: .line 178
            iload 5 /* c */
            bipush 65
            if_icmplt 28
            iload 5 /* c */
            bipush 90
            if_icmpgt 28
        25: .line 179
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
        26: .line 180
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Malformed request, header %s contains uppercase characters"
            aload 1 /* name */
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
        27: .line 181
            goto 31
      StackMap locals: int
      StackMap stack:
        28: iload 5 /* c */
            bipush 58
            if_icmpeq 31
            iload 5 /* c */
            invokestatic io.undertow.server.Connectors.isValidTokenCharacter:(B)Z
            ifne 31
        29: .line 182
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
        30: .line 183
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Malformed request, header %s contains invalid token character"
            aload 1 /* name */
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 5 // byte c
        31: .line 176
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 4 /* i */
            aload 1 /* name */
            invokevirtual io.undertow.util.HttpString.length:()I
            if_icmplt 23
        end local 4 // int i
        33: .line 187
            return
        end local 3 // boolean neverIndex
        end local 2 // java.lang.String value
        end local 1 // io.undertow.util.HttpString name
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   34     0        this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;
            0   34     1        name  Lio/undertow/util/HttpString;
            0   34     2       value  Ljava/lang/String;
            0   34     3  neverIndex  Z
           22   33     4           i  I
           24   31     5           c  B
    Exceptions:
      throws io.undertow.protocols.http2.HpackException
    MethodParameters:
            Name  Flags
      name        
      value       
      neverIndex  

  protected abstract int getPaddingLength();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected void moreData(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
        start local 1 // int data
         0: .line 191
            aload 0 /* this */
            iload 1 /* data */
            invokespecial io.undertow.protocols.http2.Http2PushBackParser.moreData:(I)V
         1: .line 192
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
            iload 1 /* data */
            iadd
            putfield io.undertow.protocols.http2.Http2HeaderBlockParser.frameRemaining:I
         2: .line 193
            return
        end local 1 // int data
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;
            0    3     1  data  I
    MethodParameters:
      Name  Flags
      data  

  public boolean isInvalid();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
         0: .line 196
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.invalid:Z
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;

  public int getStreamId();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
         0: .line 200
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2HeaderBlockParser.streamId:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2HeaderBlockParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2HeaderBlockParser;
}
SourceFile: "Http2HeaderBlockParser.java"
InnerClasses:
  public abstract HeaderEmitter = io.undertow.protocols.http2.HpackDecoder$HeaderEmitter of io.undertow.protocols.http2.HpackDecoder