public class io.undertow.protocols.http2.Http2Channel extends io.undertow.server.protocol.framed.AbstractFramedChannel<io.undertow.protocols.http2.Http2Channel, io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel, io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel> implements io.undertow.util.Attachable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.protocols.http2.Http2Channel
  super_class: io.undertow.server.protocol.framed.AbstractFramedChannel
{
  public static final java.lang.String CLEARTEXT_UPGRADE_STRING;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "h2c"

  public static final io.undertow.util.HttpString METHOD;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final io.undertow.util.HttpString PATH;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final io.undertow.util.HttpString SCHEME;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final io.undertow.util.HttpString AUTHORITY;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final io.undertow.util.HttpString STATUS;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static final int FRAME_TYPE_DATA;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final int FRAME_TYPE_HEADERS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int FRAME_TYPE_PRIORITY;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int FRAME_TYPE_RST_STREAM;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static final int FRAME_TYPE_SETTINGS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int FRAME_TYPE_PUSH_PROMISE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static final int FRAME_TYPE_PING;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  static final int FRAME_TYPE_GOAWAY;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  static final int FRAME_TYPE_WINDOW_UPDATE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  static final int FRAME_TYPE_CONTINUATION;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  public static final int ERROR_NO_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int ERROR_PROTOCOL_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int ERROR_INTERNAL_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int ERROR_FLOW_CONTROL_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final int ERROR_SETTINGS_TIMEOUT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int ERROR_STREAM_CLOSED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  public static final int ERROR_FRAME_SIZE_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  public static final int ERROR_REFUSED_STREAM;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  public static final int ERROR_CANCEL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  public static final int ERROR_COMPRESSION_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  public static final int ERROR_CONNECT_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  public static final int ERROR_ENHANCE_YOUR_CALM;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 11

  public static final int ERROR_INADEQUATE_SECURITY;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 12

  static final int DATA_FLAG_END_STREAM;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int DATA_FLAG_END_SEGMENT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int DATA_FLAG_PADDED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  static final int PING_FRAME_LENGTH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  static final int PING_FLAG_ACK;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int HEADERS_FLAG_END_STREAM;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int HEADERS_FLAG_END_SEGMENT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int HEADERS_FLAG_END_HEADERS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int HEADERS_FLAG_PADDED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  static final int HEADERS_FLAG_PRIORITY;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 32

  static final int SETTINGS_FLAG_ACK;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int CONTINUATION_FLAG_END_HEADERS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int DEFAULT_INITIAL_WINDOW_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 65535

  static final byte[] PREFACE_BYTES;
    descriptor: [B
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  public static final int DEFAULT_MAX_FRAME_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16384

  public static final int MAX_FRAME_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16777215

  public static final int FLOW_CONTROL_MIN_WINDOW;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private io.undertow.protocols.http2.Http2FrameHeaderParser frameParser;
    descriptor: Lio/undertow/protocols/http2/Http2FrameHeaderParser;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Map<java.lang.Integer, io.undertow.protocols.http2.Http2Channel$StreamHolder> currentStreams;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Integer;Lio/undertow/protocols/http2/Http2Channel$StreamHolder;>;

  private final java.lang.String protocol;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private volatile boolean pushEnabled;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int sendMaxConcurrentStreams;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int receiveMaxConcurrentStreams;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int sendConcurrentStreams;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int receiveConcurrentStreams;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int initialReceiveWindowSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int sendMaxFrameSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

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

  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 static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.protocols.http2.Http2Channel> sendConcurrentStreamsAtomicUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/protocols/http2/Http2Channel;>;

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.protocols.http2.Http2Channel> receiveConcurrentStreamsAtomicUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/protocols/http2/Http2Channel;>;

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

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

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

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

  private int lastGoodStreamId;
    descriptor: I
    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 final io.undertow.protocols.http2.HpackEncoder encoder;
    descriptor: Lio/undertow/protocols/http2/HpackEncoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.util.Random paddingRandom;
    descriptor: Ljava/util/Random;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private io.undertow.protocols.http2.Http2HeadersParser continuationParser;
    descriptor: Lio/undertow/protocols/http2/Http2HeadersParser;
    flags: (0x0002) ACC_PRIVATE

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

  private final java.util.Map<io.undertow.util.AttachmentKey<?>, java.lang.Object> attachments;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lio/undertow/util/AttachmentKey<*>;Ljava/lang/Object;>;

  private io.undertow.server.protocol.ParseTimeoutUpdater parseTimeoutUpdater;
    descriptor: Lio/undertow/server/protocol/ParseTimeoutUpdater;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.Object flowControlLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile int initialSendWindowSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile long sendWindowSize;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int receiveWindowSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 73
            new io.undertow.util.HttpString
            dup
            ldc ":method"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.protocols.http2.Http2Channel.METHOD:Lio/undertow/util/HttpString;
         1: .line 74
            new io.undertow.util.HttpString
            dup
            ldc ":path"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.protocols.http2.Http2Channel.PATH:Lio/undertow/util/HttpString;
         2: .line 75
            new io.undertow.util.HttpString
            dup
            ldc ":scheme"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.protocols.http2.Http2Channel.SCHEME:Lio/undertow/util/HttpString;
         3: .line 76
            new io.undertow.util.HttpString
            dup
            ldc ":authority"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.protocols.http2.Http2Channel.AUTHORITY:Lio/undertow/util/HttpString;
         4: .line 77
            new io.undertow.util.HttpString
            dup
            ldc ":status"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.protocols.http2.Http2Channel.STATUS:Lio/undertow/util/HttpString;
         5: .line 124
            bipush 24
            newarray 8
            dup
            iconst_0
         6: .line 125
            bipush 80
            bastore
            dup
            iconst_1
            bipush 82
            bastore
            dup
            iconst_2
            bipush 73
            bastore
            dup
            iconst_3
            bipush 32
            bastore
            dup
            iconst_4
            bipush 42
            bastore
            dup
            iconst_5
            bipush 32
            bastore
            dup
            bipush 6
            bipush 72
            bastore
            dup
            bipush 7
            bipush 84
            bastore
            dup
            bipush 8
         7: .line 126
            bipush 84
            bastore
            dup
            bipush 9
            bipush 80
            bastore
            dup
            bipush 10
            bipush 47
            bastore
            dup
            bipush 11
            bipush 50
            bastore
            dup
            bipush 12
            bipush 46
            bastore
            dup
            bipush 13
            bipush 48
            bastore
            dup
            bipush 14
            bipush 13
            bastore
            dup
            bipush 15
            bipush 10
            bastore
            dup
            bipush 16
         8: .line 127
            bipush 13
            bastore
            dup
            bipush 17
            bipush 10
            bastore
            dup
            bipush 18
            bipush 83
            bastore
            dup
            bipush 19
            bipush 77
            bastore
            dup
            bipush 20
            bipush 13
            bastore
            dup
            bipush 21
            bipush 10
            bastore
            dup
            bipush 22
            bipush 13
            bastore
            dup
            bipush 23
            bipush 10
            bastore
         9: .line 124
            putstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
        10: .line 152
            ldc Lio/undertow/protocols/http2/Http2Channel;
            ldc "sendConcurrentStreams"
        11: .line 151
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
        12: .line 155
            ldc Lio/undertow/protocols/http2/Http2Channel;
            ldc "receiveConcurrentStreams"
        13: .line 154
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
        14: .line 155
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.xnio.StreamConnection, java.lang.String, io.undertow.connector.ByteBufferPool, io.undertow.connector.PooledByteBuffer, boolean, boolean, org.xnio.OptionMap);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZLorg/xnio/OptionMap;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=8, args_size=8
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // org.xnio.StreamConnection connectedStreamChannel
        start local 2 // java.lang.String protocol
        start local 3 // io.undertow.connector.ByteBufferPool bufferPool
        start local 4 // io.undertow.connector.PooledByteBuffer data
        start local 5 // boolean clientSide
        start local 6 // boolean fromUpgrade
        start local 7 // org.xnio.OptionMap settings
         0: .line 202
            aload 0 /* this */
            aload 1 /* connectedStreamChannel */
            aload 2 /* protocol */
            aload 3 /* bufferPool */
            aload 4 /* data */
            iload 5 /* clientSide */
            iload 6 /* fromUpgrade */
            iconst_1
            aconst_null
            aload 7 /* settings */
            invokespecial io.undertow.protocols.http2.Http2Channel.<init>:(Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZZLjava/nio/ByteBuffer;Lorg/xnio/OptionMap;)V
         1: .line 203
            return
        end local 7 // org.xnio.OptionMap settings
        end local 6 // boolean fromUpgrade
        end local 5 // boolean clientSide
        end local 4 // io.undertow.connector.PooledByteBuffer data
        end local 3 // io.undertow.connector.ByteBufferPool bufferPool
        end local 2 // java.lang.String protocol
        end local 1 // org.xnio.StreamConnection connectedStreamChannel
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lio/undertow/protocols/http2/Http2Channel;
            0    2     1  connectedStreamChannel  Lorg/xnio/StreamConnection;
            0    2     2                protocol  Ljava/lang/String;
            0    2     3              bufferPool  Lio/undertow/connector/ByteBufferPool;
            0    2     4                    data  Lio/undertow/connector/PooledByteBuffer;
            0    2     5              clientSide  Z
            0    2     6             fromUpgrade  Z
            0    2     7                settings  Lorg/xnio/OptionMap;
    MethodParameters:
                        Name  Flags
      connectedStreamChannel  
      protocol                
      bufferPool              
      data                    
      clientSide              
      fromUpgrade             
      settings                

  public void <init>(org.xnio.StreamConnection, java.lang.String, io.undertow.connector.ByteBufferPool, io.undertow.connector.PooledByteBuffer, boolean, boolean, boolean, org.xnio.OptionMap);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZZLorg/xnio/OptionMap;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=9, args_size=9
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // org.xnio.StreamConnection connectedStreamChannel
        start local 2 // java.lang.String protocol
        start local 3 // io.undertow.connector.ByteBufferPool bufferPool
        start local 4 // io.undertow.connector.PooledByteBuffer data
        start local 5 // boolean clientSide
        start local 6 // boolean fromUpgrade
        start local 7 // boolean prefaceRequired
        start local 8 // org.xnio.OptionMap settings
         0: .line 205
            aload 0 /* this */
            aload 1 /* connectedStreamChannel */
            aload 2 /* protocol */
            aload 3 /* bufferPool */
            aload 4 /* data */
            iload 5 /* clientSide */
            iload 6 /* fromUpgrade */
            iload 7 /* prefaceRequired */
            aconst_null
            aload 8 /* settings */
            invokespecial io.undertow.protocols.http2.Http2Channel.<init>:(Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZZLjava/nio/ByteBuffer;Lorg/xnio/OptionMap;)V
         1: .line 206
            return
        end local 8 // org.xnio.OptionMap settings
        end local 7 // boolean prefaceRequired
        end local 6 // boolean fromUpgrade
        end local 5 // boolean clientSide
        end local 4 // io.undertow.connector.PooledByteBuffer data
        end local 3 // io.undertow.connector.ByteBufferPool bufferPool
        end local 2 // java.lang.String protocol
        end local 1 // org.xnio.StreamConnection connectedStreamChannel
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lio/undertow/protocols/http2/Http2Channel;
            0    2     1  connectedStreamChannel  Lorg/xnio/StreamConnection;
            0    2     2                protocol  Ljava/lang/String;
            0    2     3              bufferPool  Lio/undertow/connector/ByteBufferPool;
            0    2     4                    data  Lio/undertow/connector/PooledByteBuffer;
            0    2     5              clientSide  Z
            0    2     6             fromUpgrade  Z
            0    2     7         prefaceRequired  Z
            0    2     8                settings  Lorg/xnio/OptionMap;
    MethodParameters:
                        Name  Flags
      connectedStreamChannel  
      protocol                
      bufferPool              
      data                    
      clientSide              
      fromUpgrade             
      prefaceRequired         
      settings                

  public void <init>(org.xnio.StreamConnection, java.lang.String, io.undertow.connector.ByteBufferPool, io.undertow.connector.PooledByteBuffer, boolean, boolean, boolean, java.nio.ByteBuffer, org.xnio.OptionMap);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZZLjava/nio/ByteBuffer;Lorg/xnio/OptionMap;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=12, args_size=10
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // org.xnio.StreamConnection connectedStreamChannel
        start local 2 // java.lang.String protocol
        start local 3 // io.undertow.connector.ByteBufferPool bufferPool
        start local 4 // io.undertow.connector.PooledByteBuffer data
        start local 5 // boolean clientSide
        start local 6 // boolean fromUpgrade
        start local 7 // boolean prefaceRequired
        start local 8 // java.nio.ByteBuffer initialOtherSideSettings
        start local 9 // org.xnio.OptionMap settings
         0: .line 209
            aload 0 /* this */
            aload 1 /* connectedStreamChannel */
            aload 3 /* bufferPool */
         1: new io.undertow.protocols.http2.Http2FramePriority
            dup
            iload 5 /* clientSide */
            ifeq 3
            iload 6 /* fromUpgrade */
            ifeq 2
            iconst_3
            goto 4
      StackMap locals: uninitialized-this org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: uninitialized-this org.xnio.StreamConnection io.undertow.connector.ByteBufferPool new 1 new 1
         2: iconst_1
            goto 4
      StackMap locals: uninitialized-this org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: uninitialized-this org.xnio.StreamConnection io.undertow.connector.ByteBufferPool new 1 new 1
         3: iconst_2
      StackMap locals: uninitialized-this org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: uninitialized-this org.xnio.StreamConnection io.undertow.connector.ByteBufferPool new 1 new 1 int
         4: invokespecial io.undertow.protocols.http2.Http2FramePriority.<init>:(I)V
            aload 4 /* data */
            aload 9 /* settings */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.<init>:(Lorg/xnio/StreamConnection;Lio/undertow/connector/ByteBufferPool;Lio/undertow/server/protocol/framed/FramePriority;Lio/undertow/connector/PooledByteBuffer;Lorg/xnio/OptionMap;)V
         5: .line 134
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
         6: .line 140
            aload 0 /* this */
            iconst_m1
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
         7: .line 141
            aload 0 /* this */
            iconst_m1
            putfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
         8: .line 142
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.sendConcurrentStreams:I
         9: .line 143
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreams:I
        10: .line 144
            aload 0 /* this */
            ldc 65535
            putfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
        11: .line 145
            aload 0 /* this */
            sipush 16384
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxFrameSize:I
        12: .line 146
            aload 0 /* this */
            sipush 16384
            putfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
        13: .line 147
            aload 0 /* this */
            sipush 16384
            putfield io.undertow.protocols.http2.Http2Channel.unackedReceiveMaxFrameSize:I
        14: .line 157
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
        15: .line 158
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
        16: .line 159
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.lastDataRead:Z
        17: .line 171
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
        18: .line 178
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        19: .line 180
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
            putfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
        20: .line 184
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
        21: .line 189
            aload 0 /* this */
            ldc 65535
            putfield io.undertow.protocols.http2.Http2Channel.initialSendWindowSize:I
        22: .line 193
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSendWindowSize:I
            i2l
            putfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
        23: .line 198
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            putfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
        24: .line 210
            aload 0 /* this */
            iload 5 /* clientSide */
            ifeq 26
            iload 6 /* fromUpgrade */
            ifeq 25
            iconst_3
            goto 27
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: io.undertow.protocols.http2.Http2Channel
        25: iconst_1
            goto 27
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2Channel
        26: iconst_2
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: io.undertow.protocols.http2.Http2Channel int
        27: putfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
        28: .line 212
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_ENABLE_PUSH:Lorg/xnio/Option;
            iconst_1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            putfield io.undertow.protocols.http2.Http2Channel.pushEnabled:Z
        29: .line 213
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_INITIAL_WINDOW_SIZE:Lorg/xnio/Option;
            ldc 65535
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
        30: .line 214
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
        31: .line 216
            aload 0 /* this */
            aload 2 /* protocol */
            ifnonnull 32
            ldc "h2"
            goto 33
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2Channel
        32: aload 2 /* protocol */
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: io.undertow.protocols.http2.Http2Channel java.lang.String
        33: putfield io.undertow.protocols.http2.Http2Channel.protocol:Ljava/lang/String;
        34: .line 217
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.MAX_HEADERS:Lorg/xnio/Option;
            iload 5 /* clientSide */
            ifeq 35
            iconst_m1
            goto 36
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: io.undertow.protocols.http2.Http2Channel org.xnio.OptionMap org.xnio.Option
        35: sipush 200
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap
      StackMap stack: io.undertow.protocols.http2.Http2Channel org.xnio.OptionMap org.xnio.Option int
        36: invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.maxHeaders:I
        37: .line 219
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_HEADER_TABLE_SIZE:Lorg/xnio/Option;
            sipush 4096
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.encoderHeaderTableSize:I
        38: .line 220
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_MAX_FRAME_SIZE:Lorg/xnio/Option;
            sipush 16384
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
        39: .line 221
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_PADDING_SIZE:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.maxPadding:I
        40: .line 222
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE:Lorg/xnio/Option;
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.MAX_HEADER_SIZE:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.maxHeaderListSize:I
        41: .line 223
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxPadding:I
            ifle 44
        42: .line 224
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
        43: .line 225
            goto 45
        44: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
        45: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new io.undertow.protocols.http2.HpackDecoder
            dup
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.encoderHeaderTableSize:I
            invokespecial io.undertow.protocols.http2.HpackDecoder.<init>:(I)V
            putfield io.undertow.protocols.http2.Http2Channel.decoder:Lio/undertow/protocols/http2/HpackDecoder;
        46: .line 230
            aload 0 /* this */
            new io.undertow.protocols.http2.HpackEncoder
            dup
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.encoderHeaderTableSize:I
            invokespecial io.undertow.protocols.http2.HpackEncoder.<init>:(I)V
            putfield io.undertow.protocols.http2.Http2Channel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
        47: .line 231
            iload 7 /* prefaceRequired */
            ifne 49
        48: .line 232
            aload 0 /* this */
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            putfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
        49: .line 235
      StackMap locals:
      StackMap stack:
            iload 5 /* clientSide */
            ifeq 60
        50: .line 236
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPreface:()V
        51: .line 237
            aload 0 /* this */
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            putfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
        52: .line 238
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
        53: .line 239
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        54: .line 240
            iload 6 /* fromUpgrade */
            ifeq 63
        55: .line 241
            new io.undertow.protocols.http2.Http2Channel$StreamHolder
            dup
            aconst_null
            invokespecial io.undertow.protocols.http2.Http2Channel$StreamHolder.<init>:(Lio/undertow/protocols/http2/Http2StreamSinkChannel;)V
            astore 10 /* streamHolder */
        start local 10 // io.undertow.protocols.http2.Http2Channel$StreamHolder streamHolder
        56: .line 242
            aload 10 /* streamHolder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
        57: .line 243
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndIncrement:(Ljava/lang/Object;)I
            pop
        58: .line 244
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 10 /* streamHolder */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 10 // io.undertow.protocols.http2.Http2Channel$StreamHolder streamHolder
        59: .line 246
            goto 63
      StackMap locals:
      StackMap stack:
        60: iload 6 /* fromUpgrade */
            ifeq 63
        61: .line 247
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
        62: .line 248
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        63: .line 250
      StackMap locals:
      StackMap stack:
            aload 8 /* initialOtherSideSettings */
            ifnull 73
        64: .line 251
            new io.undertow.protocols.http2.Http2SettingsParser
            dup
            aload 8 /* initialOtherSideSettings */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokespecial io.undertow.protocols.http2.Http2SettingsParser.<init>:(I)V
            astore 10 /* parser */
        start local 10 // io.undertow.protocols.http2.Http2SettingsParser parser
        65: .line 253
            new io.undertow.protocols.http2.Http2FrameHeaderParser
            dup
            aload 0 /* this */
            aconst_null
            invokespecial io.undertow.protocols.http2.Http2FrameHeaderParser.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/protocols/http2/Http2HeadersParser;)V
            astore 11 /* headerParser */
        start local 11 // io.undertow.protocols.http2.Http2FrameHeaderParser headerParser
        66: .line 254
            aload 11 /* headerParser */
            aload 8 /* initialOtherSideSettings */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            putfield io.undertow.protocols.http2.Http2FrameHeaderParser.length:I
        67: .line 255
            aload 10 /* parser */
            aload 8 /* initialOtherSideSettings */
            aload 11 /* headerParser */
            invokevirtual io.undertow.protocols.http2.Http2SettingsParser.parse:(Ljava/nio/ByteBuffer;Lio/undertow/protocols/http2/Http2FrameHeaderParser;)V
        68: .line 256
            aload 0 /* this */
            aload 10 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2SettingsParser.getSettings:()Ljava/util/List;
            invokevirtual io.undertow.protocols.http2.Http2Channel.updateSettings:(Ljava/util/List;)Z
            pop
        end local 11 // io.undertow.protocols.http2.Http2FrameHeaderParser headerParser
        69: .line 257
            goto 73
      StackMap locals: io.undertow.protocols.http2.Http2Channel org.xnio.StreamConnection java.lang.String io.undertow.connector.ByteBufferPool io.undertow.connector.PooledByteBuffer int int int java.nio.ByteBuffer org.xnio.OptionMap io.undertow.protocols.http2.Http2SettingsParser
      StackMap stack: java.lang.Throwable
        70: astore 11 /* e */
        start local 11 // java.lang.Throwable e
        71: .line 258
            aload 1 /* connectedStreamChannel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        72: .line 260
            new java.lang.RuntimeException
            dup
            aload 11 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.lang.Throwable e
        end local 10 // io.undertow.protocols.http2.Http2SettingsParser parser
        73: .line 263
      StackMap locals:
      StackMap stack:
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.REQUEST_PARSE_TIMEOUT:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            istore 10 /* requestParseTimeout */
        start local 10 // int requestParseTimeout
        74: .line 264
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.NO_REQUEST_TIMEOUT:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            istore 11 /* requestIdleTimeout */
        start local 11 // int requestIdleTimeout
        75: .line 265
            iload 11 /* requestIdleTimeout */
            ifge 78
            iload 10 /* requestParseTimeout */
            ifge 78
        76: .line 266
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
        77: .line 267
            goto 80
        78: .line 268
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            new io.undertow.server.protocol.ParseTimeoutUpdater
            dup
            aload 0 /* this */
            iload 10 /* requestParseTimeout */
            i2l
            iload 11 /* requestIdleTimeout */
            i2l
            new io.undertow.protocols.http2.Http2Channel$1
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$1.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokespecial io.undertow.server.protocol.ParseTimeoutUpdater.<init>:(Lorg/xnio/channels/ConnectedChannel;JJLjava/lang/Runnable;)V
            putfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
        79: .line 282
            aload 0 /* this */
            new io.undertow.protocols.http2.Http2Channel$2
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$2.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokevirtual io.undertow.protocols.http2.Http2Channel.addCloseTask:(Lorg/xnio/ChannelListener;)V
        80: .line 289
      StackMap locals:
      StackMap stack:
            return
        end local 11 // int requestIdleTimeout
        end local 10 // int requestParseTimeout
        end local 9 // org.xnio.OptionMap settings
        end local 8 // java.nio.ByteBuffer initialOtherSideSettings
        end local 7 // boolean prefaceRequired
        end local 6 // boolean fromUpgrade
        end local 5 // boolean clientSide
        end local 4 // io.undertow.connector.PooledByteBuffer data
        end local 3 // io.undertow.connector.ByteBufferPool bufferPool
        end local 2 // java.lang.String protocol
        end local 1 // org.xnio.StreamConnection connectedStreamChannel
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   81     0                      this  Lio/undertow/protocols/http2/Http2Channel;
            0   81     1    connectedStreamChannel  Lorg/xnio/StreamConnection;
            0   81     2                  protocol  Ljava/lang/String;
            0   81     3                bufferPool  Lio/undertow/connector/ByteBufferPool;
            0   81     4                      data  Lio/undertow/connector/PooledByteBuffer;
            0   81     5                clientSide  Z
            0   81     6               fromUpgrade  Z
            0   81     7           prefaceRequired  Z
            0   81     8  initialOtherSideSettings  Ljava/nio/ByteBuffer;
            0   81     9                  settings  Lorg/xnio/OptionMap;
           56   59    10              streamHolder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
           65   73    10                    parser  Lio/undertow/protocols/http2/Http2SettingsParser;
           66   69    11              headerParser  Lio/undertow/protocols/http2/Http2FrameHeaderParser;
           71   73    11                         e  Ljava/lang/Throwable;
           74   81    10       requestParseTimeout  I
           75   81    11        requestIdleTimeout  I
      Exception table:
        from    to  target  type
          65    69      70  Class java.lang.Throwable
    MethodParameters:
                          Name  Flags
      connectedStreamChannel    
      protocol                  
      bufferPool                
      data                      
      clientSide                
      fromUpgrade               
      prefaceRequired           
      initialOtherSideSettings  
      settings                  

  private void sendSettings();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 292
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* settings */
        start local 1 // java.util.List settings
         1: .line 293
            aload 1 /* settings */
            new io.undertow.protocols.http2.Http2Setting
            dup
            iconst_1
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.encoderHeaderTableSize:I
            i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 294
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 7
         3: .line 295
            aload 1 /* settings */
         4: new io.undertow.protocols.http2.Http2Setting
            dup
            iconst_2
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.pushEnabled:Z
            ifeq 5
            iconst_1
            goto 6
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List
      StackMap stack: java.util.List new 4 new 4 int
         5: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List
      StackMap stack: java.util.List new 4 new 4 int int
         6: i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 297
      StackMap locals:
      StackMap stack:
            aload 1 /* settings */
            new io.undertow.protocols.http2.Http2Setting
            dup
            iconst_5
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
            i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 298
            aload 1 /* settings */
            new io.undertow.protocols.http2.Http2Setting
            dup
            iconst_4
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 299
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxHeaderListSize:I
            ifle 11
        10: .line 300
            aload 1 /* settings */
            new io.undertow.protocols.http2.Http2Setting
            dup
            bipush 6
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxHeaderListSize:I
            i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
            ifle 13
        12: .line 303
            aload 1 /* settings */
            new io.undertow.protocols.http2.Http2Setting
            dup
            iconst_3
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
            i2l
            invokespecial io.undertow.protocols.http2.Http2Setting.<init>:(IJ)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 305
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2SettingsStreamSinkChannel
            dup
            aload 0 /* this */
            aload 1 /* settings */
            invokespecial io.undertow.protocols.http2.Http2SettingsStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Ljava/util/List;)V
            astore 2 /* stream */
        start local 2 // io.undertow.protocols.http2.Http2SettingsStreamSinkChannel stream
        14: .line 306
            aload 0 /* this */
            aload 2 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
        15: .line 307
            return
        end local 2 // io.undertow.protocols.http2.Http2SettingsStreamSinkChannel stream
        end local 1 // java.util.List settings
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lio/undertow/protocols/http2/Http2Channel;
            1   16     1  settings  Ljava/util/List<Lio/undertow/protocols/http2/Http2Setting;>;
           14   16     2    stream  Lio/undertow/protocols/http2/Http2SettingsStreamSinkChannel;

  private void sendSettingsAck();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 310
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
            ifne 3
         1: .line 311
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
         2: .line 312
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
         3: .line 314
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2SettingsStreamSinkChannel
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2SettingsStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            astore 1 /* stream */
        start local 1 // io.undertow.protocols.http2.Http2SettingsStreamSinkChannel stream
         4: .line 315
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         5: .line 316
            return
        end local 1 // io.undertow.protocols.http2.Http2SettingsStreamSinkChannel stream
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lio/undertow/protocols/http2/Http2Channel;
            4    6     1  stream  Lio/undertow/protocols/http2/Http2SettingsStreamSinkChannel;

  private void flushChannelIgnoreFailure(org.xnio.channels.StreamSinkChannel);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // org.xnio.channels.StreamSinkChannel stream
         0: .line 320
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
         1: .line 321
            goto 7
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 2 /* e */
        start local 2 // java.io.IOException e
         3: .line 322
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 2 /* e */
            invokeinterface io.undertow.UndertowLogger.ioException:(Ljava/io/IOException;)V
        end local 2 // java.io.IOException e
         4: goto 7
         5: .line 323
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* t */
        start local 2 // java.lang.Throwable t
         6: .line 324
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 2 /* t */
            invokeinterface io.undertow.UndertowLogger.handleUnexpectedFailure:(Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
         7: .line 326
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.xnio.channels.StreamSinkChannel stream
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lio/undertow/protocols/http2/Http2Channel;
            0    8     1  stream  Lorg/xnio/channels/StreamSinkChannel;
            3    4     2       e  Ljava/io/IOException;
            6    7     2       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
           0     1       5  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      stream  

  private void flushChannel(org.xnio.channels.StreamSinkChannel);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // org.xnio.channels.StreamSinkChannel stream
         0: .line 329
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
         1: .line 330
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.flush:()Z
            ifne 4
         2: .line 331
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            aconst_null
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.writeExceptionHandler:()Lorg/xnio/ChannelExceptionHandler;
            invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         3: .line 332
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
         4: .line 334
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.xnio.channels.StreamSinkChannel stream
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lio/undertow/protocols/http2/Http2Channel;
            0    5     1  stream  Lorg/xnio/channels/StreamSinkChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  private void sendPreface();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 337
            new io.undertow.protocols.http2.Http2PrefaceStreamSinkChannel
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2PrefaceStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            astore 1 /* preface */
        start local 1 // io.undertow.protocols.http2.Http2PrefaceStreamSinkChannel preface
         1: .line 338
            aload 0 /* this */
            aload 1 /* preface */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         2: .line 339
            return
        end local 1 // io.undertow.protocols.http2.Http2PrefaceStreamSinkChannel preface
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/undertow/protocols/http2/Http2Channel;
            1    3     1  preface  Lio/undertow/protocols/http2/Http2PrefaceStreamSinkChannel;

  protected io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel createChannel(io.undertow.server.protocol.framed.FrameHeaderData, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        start local 2 // io.undertow.connector.PooledByteBuffer frameData
         0: .line 342
            aload 0 /* this */
            aload 1 /* frameHeaderData */
            aload 2 /* frameData */
            invokevirtual io.undertow.protocols.http2.Http2Channel.createChannelImpl:(Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
            astore 3 /* channel */
        start local 3 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
         1: .line 343
            aload 3 /* channel */
            instanceof io.undertow.protocols.http2.Http2StreamSourceChannel
            ifeq 8
         2: .line 344
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 8
         3: .line 345
            aload 3 /* channel */
            ifnull 6
         4: .line 346
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.requestStarted:()V
         5: .line 347
            goto 8
      StackMap locals: io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel
      StackMap stack:
         6: aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 8
         7: .line 348
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.failedParse:()V
         8: .line 352
      StackMap locals:
      StackMap stack:
            aload 3 /* channel */
            areturn
        end local 3 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        end local 2 // io.undertow.connector.PooledByteBuffer frameData
        end local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Lio/undertow/protocols/http2/Http2Channel;
            0    9     1  frameHeaderData  Lio/undertow/server/protocol/framed/FrameHeaderData;
            0    9     2        frameData  Lio/undertow/connector/PooledByteBuffer;
            1    9     3          channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      frameHeaderData  
      frameData        

  protected io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel createChannelImpl(io.undertow.server.protocol.framed.FrameHeaderData, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=8, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        start local 2 // io.undertow.connector.PooledByteBuffer frameData
         0: .line 357
            aload 1 /* frameHeaderData */
            checkcast io.undertow.protocols.http2.Http2FrameHeaderParser
            astore 3 /* frameParser */
        start local 3 // io.undertow.protocols.http2.Http2FrameHeaderParser frameParser
         1: .line 359
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            ifne 5
         2: .line 362
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         3: .line 363
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Dropping Frame of length %s for stream %s"
            aload 3 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getFrameLength:()J
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            i2l
            invokeinterface io.undertow.UndertowLogger.tracef:(Ljava/lang/String;JJ)V
         4: .line 364
            aconst_null
            areturn
         5: .line 368
      StackMap locals: io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            tableswitch { // 1 - 9
                    1: 13
                    2: 104
                    3: 59
                    4: 69
                    5: 6
                    6: 80
                    7: 87
                    8: 100
                    9: 6
              default: 110
          }
         6: .line 374
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            instanceof io.undertow.protocols.http2.Http2PushPromiseParser
            ifeq 13
         7: .line 375
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifne 10
         8: .line 376
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         9: .line 377
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.serverReceivedPushPromise:()Ljava/io/IOException;
            athrow
        10: .line 379
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2PushPromiseParser
            astore 5 /* pushPromiseParser */
        start local 5 // io.undertow.protocols.http2.Http2PushPromiseParser pushPromiseParser
        11: .line 380
            new io.undertow.protocols.http2.Http2PushPromiseStreamSourceChannel
            dup
            aload 0 /* this */
            aload 2 /* frameData */
            aload 3 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getFrameLength:()J
            aload 5 /* pushPromiseParser */
            invokevirtual io.undertow.protocols.http2.Http2PushPromiseParser.getHeaderMap:()Lio/undertow/util/HeaderMap;
            aload 5 /* pushPromiseParser */
            invokevirtual io.undertow.protocols.http2.Http2PushPromiseParser.getPromisedStreamId:()I
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokespecial io.undertow.protocols.http2.Http2PushPromiseStreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/connector/PooledByteBuffer;JLio/undertow/util/HeaderMap;II)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        12: .line 381
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2PushPromiseParser pushPromiseParser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        13: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokevirtual io.undertow.protocols.http2.Http2Channel.isIdle:(I)Z
            ifne 24
        14: .line 389
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 5 /* existing */
        start local 5 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        15: .line 390
            aload 5 /* existing */
            ifnull 16
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
            ifeq 19
        16: .line 391
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser top io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        17: .line 392
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        18: .line 393
            aconst_null
            areturn
        19: .line 394
      StackMap locals:
      StackMap stack:
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 34
        20: .line 397
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_1
            invokestatic org.xnio.Bits.allAreSet:(II)Z
            ifne 34
        21: .line 398
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        22: .line 399
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        23: .line 400
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        24: .line 404
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            if_icmpge 28
        25: .line 405
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        26: .line 406
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        27: .line 407
            aconst_null
            areturn
        28: .line 409
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            iconst_2
            irem
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 29
            iconst_1
            goto 30
      StackMap locals:
      StackMap stack: int
        29: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack: int int
        30: if_icmpne 34
        31: .line 410
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        32: .line 411
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        33: .line 412
            aconst_null
            areturn
        34: .line 415
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2HeadersParser
            astore 5 /* parser */
        start local 5 // io.undertow.protocols.http2.Http2HeadersParser parser
        35: .line 417
            new io.undertow.protocols.http2.Http2StreamSourceChannel
            dup
            aload 0 /* this */
            aload 2 /* frameData */
            aload 1 /* frameHeaderData */
            invokeinterface io.undertow.server.protocol.framed.FrameHeaderData.getFrameLength:()J
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.getHeaderMap:()Lio/undertow/util/HeaderMap;
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokespecial io.undertow.protocols.http2.Http2StreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/connector/PooledByteBuffer;JLio/undertow/util/HeaderMap;I)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        36: .line 418
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokestatic java.lang.Math.max:(II)I
            putfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
        37: .line 420
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 6 /* holder */
        start local 6 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        38: .line 421
            aload 6 /* holder */
            ifnonnull 42
        39: .line 422
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndIncrement:(Ljava/lang/Object;)I
            pop
        40: .line 423
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.undertow.protocols.http2.Http2Channel$StreamHolder
            dup
            aload 4 /* channel */
            checkcast io.undertow.protocols.http2.Http2StreamSourceChannel
            invokespecial io.undertow.protocols.http2.Http2Channel$StreamHolder.<init>:(Lio/undertow/protocols/http2/Http2StreamSourceChannel;)V
            dup
            astore 6 /* holder */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        41: .line 424
            goto 43
        42: .line 425
      StackMap locals: io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel io.undertow.protocols.http2.Http2HeadersParser io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 6 /* holder */
            aload 4 /* channel */
            checkcast io.undertow.protocols.http2.Http2StreamSourceChannel
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
        43: .line 427
      StackMap locals:
      StackMap stack:
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.isHeadersEndStream:()Z
            ifeq 51
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_4
            invokestatic org.xnio.Bits.allAreSet:(II)Z
            ifeq 51
        44: .line 428
            aload 4 /* channel */
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.lastFrame:()V
        45: .line 429
            aload 6 /* holder */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
        46: .line 431
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 47
            ldc "100"
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.getHeaderMap:()Lio/undertow/util/HeaderMap;
            getstatic io.undertow.protocols.http2.Http2Channel.STATUS:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HeaderMap.getFirst:(Lio/undertow/util/HttpString;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 51
        47: .line 432
      StackMap locals:
      StackMap stack:
            aload 6 /* holder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
        48: .line 433
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
            ifeq 51
        49: .line 434
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
        50: .line 435
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        51: .line 439
      StackMap locals:
      StackMap stack:
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.isInvalid:()Z
            ifeq 55
        52: .line 440
            aload 4 /* channel */
            iconst_1
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.rstStream:(I)V
        53: .line 441
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendRstStream:(II)V
        54: .line 442
            aconst_null
            astore 4 /* channel */
        55: .line 444
      StackMap locals:
      StackMap stack:
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.getDependentStreamId:()I
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            if_icmpne 113
        56: .line 445
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendRstStream:(II)V
        57: .line 446
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        58: .line 447
            aconst_null
            areturn
        end local 6 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        end local 5 // io.undertow.protocols.http2.Http2HeadersParser parser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        59: .line 455
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2RstStreamParser
            astore 5 /* parser */
        start local 5 // io.undertow.protocols.http2.Http2RstStreamParser parser
        60: .line 456
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            ifne 64
        61: .line 457
            aload 2 /* frameData */
            ifnull 63
        62: .line 458
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        63: .line 460
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser top io.undertow.protocols.http2.Http2RstStreamParser
      StackMap stack:
            new io.undertow.protocols.http2.ConnectionErrorException
            dup
            iconst_1
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            iconst_3
            invokeinterface io.undertow.UndertowMessages.streamIdMustNotBeZeroForFrameType:(I)Ljava/lang/String;
            invokespecial io.undertow.protocols.http2.ConnectionErrorException.<init>:(ILjava/lang/String;)V
            athrow
        64: .line 462
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2RstStreamStreamSourceChannel
            dup
            aload 0 /* this */
            aload 2 /* frameData */
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2RstStreamParser.getErrorCode:()I
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokespecial io.undertow.protocols.http2.Http2RstStreamStreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/connector/PooledByteBuffer;II)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        65: .line 463
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokevirtual io.undertow.protocols.http2.Http2Channel.handleRstStream:(I)V
        66: .line 464
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            invokevirtual io.undertow.protocols.http2.Http2Channel.isIdle:(I)Z
            ifeq 113
        67: .line 465
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        68: .line 467
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2RstStreamParser parser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        69: .line 470
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 73
        70: .line 471
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2SettingsParser
            invokevirtual io.undertow.protocols.http2.Http2SettingsParser.getSettings:()Ljava/util/List;
            invokevirtual io.undertow.protocols.http2.Http2Channel.updateSettings:(Ljava/util/List;)Z
            ifeq 77
        71: .line 472
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettingsAck:()V
        72: .line 474
            goto 77
      StackMap locals:
      StackMap stack:
        73: aload 1 /* frameHeaderData */
            invokeinterface io.undertow.server.protocol.framed.FrameHeaderData.getFrameLength:()J
            lconst_0
            lcmp
            ifeq 77
        74: .line 475
            aload 0 /* this */
            bipush 6
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        75: .line 476
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        76: .line 477
            aconst_null
            areturn
        77: .line 479
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2SettingsStreamSourceChannel
            dup
            aload 0 /* this */
            aload 2 /* frameData */
            aload 3 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getFrameLength:()J
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2SettingsParser
            invokevirtual io.undertow.protocols.http2.Http2SettingsParser.getSettings:()Ljava/util/List;
            invokespecial io.undertow.protocols.http2.Http2SettingsStreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/connector/PooledByteBuffer;JLjava/util/List;)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        78: .line 480
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
            putfield io.undertow.protocols.http2.Http2Channel.unackedReceiveMaxFrameSize:I
        79: .line 481
            goto 113
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        80: .line 484
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2PingParser
            astore 5 /* pingParser */
        start local 5 // io.undertow.protocols.http2.Http2PingParser pingParser
        81: .line 485
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        82: .line 486
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            istore 6 /* ack */
        start local 6 // boolean ack
        83: .line 487
            new io.undertow.protocols.http2.Http2PingStreamSourceChannel
            dup
            aload 0 /* this */
            aload 5 /* pingParser */
            invokevirtual io.undertow.protocols.http2.Http2PingParser.getData:()[B
            iload 6 /* ack */
            invokespecial io.undertow.protocols.http2.Http2PingStreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;[BZ)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        84: .line 488
            iload 6 /* ack */
            ifne 113
        85: .line 489
            aload 0 /* this */
            aload 5 /* pingParser */
            invokevirtual io.undertow.protocols.http2.Http2PingParser.getData:()[B
            aconst_null
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPing:([BLorg/xnio/ChannelExceptionHandler;Z)V
        86: .line 491
            goto 113
        end local 6 // boolean ack
        end local 5 // io.undertow.protocols.http2.Http2PingParser pingParser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        87: .line 494
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2GoAwayParser
            astore 5 /* http2GoAwayParser */
        start local 5 // io.undertow.protocols.http2.Http2GoAwayParser http2GoAwayParser
        88: .line 495
            new io.undertow.protocols.http2.Http2GoAwayStreamSourceChannel
            dup
            aload 0 /* this */
            aload 2 /* frameData */
            aload 3 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getFrameLength:()J
            aload 5 /* http2GoAwayParser */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayParser.getStatusCode:()I
            aload 5 /* http2GoAwayParser */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayParser.getLastGoodStreamId:()I
            invokespecial io.undertow.protocols.http2.Http2GoAwayStreamSourceChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/connector/PooledByteBuffer;JII)V
            astore 4 /* channel */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        89: .line 496
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
        90: .line 499
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 96
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel io.undertow.protocols.http2.Http2GoAwayParser top java.util.Iterator
      StackMap stack:
        91: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 6 /* holder */
        start local 6 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        92: .line 500
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 94
        93: .line 501
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            invokevirtual io.undertow.protocols.http2.Http2StreamSourceChannel.rstStream:()V
        94: .line 503
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel io.undertow.protocols.http2.Http2GoAwayParser io.undertow.protocols.http2.Http2Channel$StreamHolder java.util.Iterator
      StackMap stack:
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            ifnull 96
        95: .line 504
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.rstStream:()V
        end local 6 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        96: .line 499
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel io.undertow.protocols.http2.Http2GoAwayParser top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 91
        97: .line 507
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        98: .line 508
            aload 0 /* this */
            iconst_0
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        99: .line 509
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2GoAwayParser http2GoAwayParser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
       100: .line 512
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2WindowUpdateParser
            astore 5 /* parser */
        start local 5 // io.undertow.protocols.http2.Http2WindowUpdateParser parser
       101: .line 513
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2WindowUpdateParser.getDeltaWindowSize:()I
            invokevirtual io.undertow.protocols.http2.Http2Channel.handleWindowUpdate:(II)V
       102: .line 514
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       103: .line 516
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2WindowUpdateParser parser
       104: .line 519
      StackMap locals:
      StackMap stack:
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.parser:Lio/undertow/protocols/http2/Http2PushBackParser;
            checkcast io.undertow.protocols.http2.Http2PriorityParser
            astore 5 /* parser */
        start local 5 // io.undertow.protocols.http2.Http2PriorityParser parser
       105: .line 520
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2PriorityParser.getStreamDependency:()I
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            if_icmpne 108
       106: .line 522
            aload 0 /* this */
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendRstStream:(II)V
       107: .line 523
            aconst_null
            areturn
       108: .line 525
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser top io.undertow.protocols.http2.Http2PriorityParser
      StackMap stack:
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       109: .line 533
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2PriorityParser parser
       110: .line 536
      StackMap locals: io.undertow.protocols.http2.Http2Channel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Dropping frame of length %s and type %s for stream %s as we do not understand this type of frame"
            aload 3 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getFrameLength:()J
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            i2l
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            i2l
            invokeinterface io.undertow.UndertowLogger.tracef:(Ljava/lang/String;JJJ)V
       111: .line 537
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       112: .line 538
            aconst_null
            areturn
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
       113: .line 541
      StackMap locals: io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel
      StackMap stack:
            aload 4 /* channel */
            areturn
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        end local 3 // io.undertow.protocols.http2.Http2FrameHeaderParser frameParser
        end local 2 // io.undertow.connector.PooledByteBuffer frameData
        end local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  114     0               this  Lio/undertow/protocols/http2/Http2Channel;
            0  114     1    frameHeaderData  Lio/undertow/server/protocol/framed/FrameHeaderData;
            0  114     2          frameData  Lio/undertow/connector/PooledByteBuffer;
            1  114     3        frameParser  Lio/undertow/protocols/http2/Http2FrameHeaderParser;
           12   13     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           36   59     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           65   69     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           78   80     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           84   87     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           89  100     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
          113  114     4            channel  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
           11   13     5  pushPromiseParser  Lio/undertow/protocols/http2/Http2PushPromiseParser;
           15   24     5           existing  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
           35   59     5             parser  Lio/undertow/protocols/http2/Http2HeadersParser;
           38   59     6             holder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
           60   69     5             parser  Lio/undertow/protocols/http2/Http2RstStreamParser;
           81   87     5         pingParser  Lio/undertow/protocols/http2/Http2PingParser;
           83   87     6                ack  Z
           88  100     5  http2GoAwayParser  Lio/undertow/protocols/http2/Http2GoAwayParser;
           92   96     6             holder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
          101  104     5             parser  Lio/undertow/protocols/http2/Http2WindowUpdateParser;
          105  110     5             parser  Lio/undertow/protocols/http2/Http2PriorityParser;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      frameHeaderData  
      frameData        

  protected io.undertow.server.protocol.framed.FrameHeaderData parseFrame(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Lio/undertow/server/protocol/framed/FrameHeaderData;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // java.nio.ByteBuffer data
         0: .line 546
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            if_icmpge 7
         1: .line 547
            goto 6
         2: .line 548
      StackMap locals:
      StackMap stack:
            aload 1 /* data */
            invokevirtual java.nio.ByteBuffer.get:()B
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
            baload
            if_icmpeq 5
         3: .line 549
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getUnderlyingConnection:()Lorg/xnio/StreamConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         4: .line 550
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.incorrectHttp2Preface:()Ljava/io/IOException;
            athrow
         5: .line 552
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
            iconst_1
            iadd
            putfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
         6: .line 547
      StackMap locals:
      StackMap stack:
            aload 1 /* data */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 7
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            if_icmplt 2
         7: .line 555
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.frameParser:Lio/undertow/protocols/http2/Http2FrameHeaderParser;
            astore 2 /* frameParser */
        start local 2 // io.undertow.protocols.http2.Http2FrameHeaderParser frameParser
         8: .line 556
            aload 2 /* frameParser */
            ifnonnull 11
         9: .line 557
            aload 0 /* this */
            new io.undertow.protocols.http2.Http2FrameHeaderParser
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
            invokespecial io.undertow.protocols.http2.Http2FrameHeaderParser.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/protocols/http2/Http2HeadersParser;)V
            dup
            astore 2 /* frameParser */
            putfield io.undertow.protocols.http2.Http2Channel.frameParser:Lio/undertow/protocols/http2/Http2FrameHeaderParser;
        10: .line 558
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
        11: .line 560
      StackMap locals: io.undertow.protocols.http2.Http2FrameHeaderParser
      StackMap stack:
            aload 2 /* frameParser */
            aload 1 /* data */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.handle:(Ljava/nio/ByteBuffer;)Z
            ifne 13
        12: .line 561
            aconst_null
            areturn
        13: .line 563
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSettingsReceived:Z
            ifne 19
        14: .line 564
            aload 2 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            iconst_4
            if_icmpeq 18
        15: .line 565
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 2 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            invokeinterface io.undertow.UndertowLogger.remoteEndpointFailedToSendInitialSettings:(I)V
        16: .line 571
            aload 0 /* this */
            new java.io.IOException
            dup
            invokespecial java.io.IOException.<init>:()V
            invokevirtual io.undertow.protocols.http2.Http2Channel.markReadsBroken:(Ljava/lang/Throwable;)V
        17: .line 572
            goto 19
        18: .line 573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsReceived:Z
        19: .line 576
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.frameParser:Lio/undertow/protocols/http2/Http2FrameHeaderParser;
        20: .line 577
            aload 2 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getActualLength:()I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
            if_icmple 23
            aload 2 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getActualLength:()I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.unackedReceiveMaxFrameSize:I
            if_icmple 23
        21: .line 578
            aload 0 /* this */
            bipush 6
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        22: .line 579
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.http2FrameTooLarge:()Ljava/io/IOException;
            athrow
        23: .line 581
      StackMap locals:
      StackMap stack:
            aload 2 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getContinuationParser:()Lio/undertow/protocols/http2/Http2HeadersParser;
            ifnull 26
        24: .line 582
            aload 0 /* this */
            aload 2 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getContinuationParser:()Lio/undertow/protocols/http2/Http2HeadersParser;
            putfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
        25: .line 583
            aconst_null
            areturn
        26: .line 585
      StackMap locals:
      StackMap stack:
            aload 2 /* frameParser */
            areturn
        end local 2 // io.undertow.protocols.http2.Http2FrameHeaderParser frameParser
        end local 1 // java.nio.ByteBuffer data
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Lio/undertow/protocols/http2/Http2Channel;
            0   27     1         data  Ljava/nio/ByteBuffer;
            8   27     2  frameParser  Lio/undertow/protocols/http2/Http2FrameHeaderParser;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  protected void lastDataRead();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 590
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.lastDataRead:Z
         1: .line 591
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
            ifne 4
         2: .line 593
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         3: .line 594
            goto 7
         4: .line 595
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
         5: .line 596
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
            ifne 7
         6: .line 598
            aload 0 /* this */
            bipush 10
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         7: .line 601
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/undertow/protocols/http2/Http2Channel;

  protected boolean isLastFrameReceived();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 605
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastDataRead:Z
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  protected boolean isLastFrameSent();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 610
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  protected void handleBrokenSourceChannel(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // java.lang.Throwable e
         0: .line 615
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            aload 1 /* e */
            ldc "Closing HTTP2 channel to %s due to broken read side"
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getPeerAddress:()Ljava/net/SocketAddress;
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 616
            aload 1 /* e */
            instanceof io.undertow.protocols.http2.ConnectionErrorException
            ifeq 4
         2: .line 617
            aload 0 /* this */
            aload 1 /* e */
            checkcast io.undertow.protocols.http2.ConnectionErrorException
            invokevirtual io.undertow.protocols.http2.ConnectionErrorException.getCode:()I
            new io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(ILorg/xnio/ChannelExceptionHandler;)V
         3: .line 618
            goto 7
         4: .line 619
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* e */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 5
            bipush 10
            goto 6
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2Channel
         5: iconst_1
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.lang.Throwable
      StackMap stack: io.undertow.protocols.http2.Http2Channel int
         6: new io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(ILorg/xnio/ChannelExceptionHandler;)V
         7: .line 621
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable e
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    8     1     e  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      e     

  protected void handleBrokenSinkChannel(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // java.lang.Throwable e
         0: .line 625
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            aload 1 /* e */
            ldc "Closing HTTP2 channel to %s due to broken write side"
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getPeerAddress:()Ljava/net/SocketAddress;
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 628
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         2: .line 629
            return
        end local 1 // java.lang.Throwable e
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    3     1     e  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      e     

  protected void closeSubChannels();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 634
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 2
            goto 11
      StackMap locals: io.undertow.protocols.http2.Http2Channel top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 1 /* e */
        start local 1 // java.util.Map$Entry e
         2: .line 635
            aload 1 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 3 /* holder */
        start local 3 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
         3: .line 636
            aload 3 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            astore 4 /* receiver */
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel receiver
         4: .line 637
            aload 4 /* receiver */
            ifnull 6
         5: .line 638
            aload 4 /* receiver */
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.markStreamBroken:()V
         6: .line 640
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.Map$Entry java.util.Iterator io.undertow.protocols.http2.Http2Channel$StreamHolder io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel
      StackMap stack:
            aload 3 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            astore 5 /* sink */
        start local 5 // io.undertow.protocols.http2.Http2StreamSinkChannel sink
         7: .line 641
            aload 5 /* sink */
            ifnull 11
         8: .line 642
            aload 5 /* sink */
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.isWritesShutdown:()Z
            ifeq 10
         9: .line 643
            aload 5 /* sink */
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 5 /* sink */
            aload 5 /* sink */
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            checkcast org.xnio.ChannelListener$SimpleSetter
            invokevirtual org.xnio.ChannelListener$SimpleSetter.get:()Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        10: .line 645
      StackMap locals: io.undertow.protocols.http2.Http2StreamSinkChannel
      StackMap stack:
            aload 5 /* sink */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        end local 5 // io.undertow.protocols.http2.Http2StreamSinkChannel sink
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel receiver
        end local 3 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        end local 1 // java.util.Map$Entry e
        11: .line 634
      StackMap locals: io.undertow.protocols.http2.Http2Channel top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        12: .line 649
            return
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lio/undertow/protocols/http2/Http2Channel;
            2   11     1         e  Ljava/util/Map$Entry<Ljava/lang/Integer;Lio/undertow/protocols/http2/Http2Channel$StreamHolder;>;
            3   11     3    holder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
            4   11     4  receiver  Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
            7   11     5      sink  Lio/undertow/protocols/http2/Http2StreamSinkChannel;

  protected java.util.Collection<io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel<io.undertow.protocols.http2.Http2Channel, io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel, io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel>> getReceivers();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 653
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* channels */
        start local 1 // java.util.List channels
         1: .line 654
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 655
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
            ifne 5
         4: .line 656
            aload 1 /* channels */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.util.Map$Entry entry
         5: .line 654
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 659
            aload 1 /* channels */
            areturn
        end local 1 // java.util.List channels
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lio/undertow/protocols/http2/Http2Channel;
            1    7     1  channels  Ljava/util/List<Lio/undertow/server/protocol/framed/AbstractFramedStreamSourceChannel<Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;>;
            3    5     2     entry  Ljava/util/Map$Entry<Ljava/lang/Integer;Lio/undertow/protocols/http2/Http2Channel$StreamHolder;>;
    Signature: ()Ljava/util/Collection<Lio/undertow/server/protocol/framed/AbstractFramedStreamSourceChannel<Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;>;

  boolean updateSettings(java.util.List<io.undertow.protocols.http2.Http2Setting>);
    descriptor: (Ljava/util/List;)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // java.util.List settings
         0: .line 668
            aload 1 /* settings */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 38
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Setting
            astore 2 /* setting */
        start local 2 // io.undertow.protocols.http2.Http2Setting setting
         2: .line 669
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_4
            if_icmpne 13
         3: .line 670
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         4: .line 672
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            ldc 2147483647
            lcmp
            ifle 8
         5: .line 673
            aload 0 /* this */
            iconst_3
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         6: .line 674
            aload 4
            monitorexit
         7: iconst_0
            ireturn
         8: .line 676
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List io.undertow.protocols.http2.Http2Setting java.util.Iterator java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            putfield io.undertow.protocols.http2.Http2Channel.initialSendWindowSize:I
         9: .line 670
            aload 4
            monitorexit
        10: goto 38
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 679
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_5
            if_icmpne 20
        14: .line 680
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            ldc 16777215
            lcmp
            ifgt 15
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            ldc 16384
            lcmp
            ifge 18
        15: .line 681
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            new java.lang.StringBuilder
            dup
            ldc "Invalid value received for SETTINGS_MAX_FRAME_SIZE "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
        16: .line 682
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        17: .line 683
            iconst_0
            ireturn
        18: .line 685
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxFrameSize:I
        19: .line 686
            goto 38
      StackMap locals:
      StackMap stack:
        20: aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_1
            if_icmpne 27
        21: .line 687
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        22: .line 688
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            invokevirtual io.undertow.protocols.http2.HpackEncoder.setMaxTableSize:(I)V
        23: .line 687
            aload 4
            monitorexit
        24: goto 38
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List io.undertow.protocols.http2.Http2Setting java.util.Iterator io.undertow.protocols.http2.Http2Channel
      StackMap stack: java.lang.Throwable
        25: aload 4
            monitorexit
        26: athrow
        27: .line 690
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_2
            if_icmpne 36
        28: .line 692
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            istore 4 /* result */
        start local 4 // int result
        29: .line 695
            iload 4 /* result */
            ifne 32
        30: .line 696
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.pushEnabled:Z
        31: .line 697
            goto 38
      StackMap locals: int
      StackMap stack:
        32: iload 4 /* result */
            iconst_1
            if_icmpeq 38
        33: .line 699
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            new java.lang.StringBuilder
            dup
            ldc "Invalid value received for SETTINGS_ENABLE_PUSH "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* result */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
        34: .line 700
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        35: .line 701
            iconst_0
            ireturn
        end local 4 // int result
        36: .line 703
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_3
            if_icmpne 38
        37: .line 704
            aload 0 /* this */
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
        end local 2 // io.undertow.protocols.http2.Http2Setting setting
        38: .line 668
      StackMap locals: io.undertow.protocols.http2.Http2Channel java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        39: .line 708
            iconst_1
            ireturn
        end local 1 // java.util.List settings
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   40     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0   40     1  settings  Ljava/util/List<Lio/undertow/protocols/http2/Http2Setting;>;
            2   38     2   setting  Lio/undertow/protocols/http2/Http2Setting;
           29   36     4    result  I
      Exception table:
        from    to  target  type
           4     7      11  any
           8    10      11  any
          11    12      11  any
          22    24      25  any
          25    26      25  any
    Signature: (Ljava/util/List<Lio/undertow/protocols/http2/Http2Setting;>;)Z
    MethodParameters:
          Name  Flags
      settings  

  public int getHttp2Version();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 712
            iconst_3
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public int getInitialSendWindowSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 716
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSendWindowSize:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public int getInitialReceiveWindowSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 720
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public int getSendMaxConcurrentStreams();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 724
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public void setSendMaxConcurrentStreams(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int sendMaxConcurrentStreams
         0: .line 728
            aload 0 /* this */
            iload 1 /* sendMaxConcurrentStreams */
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
         1: .line 729
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
         2: .line 730
            return
        end local 1 // int sendMaxConcurrentStreams
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    3     0                      this  Lio/undertow/protocols/http2/Http2Channel;
            0    3     1  sendMaxConcurrentStreams  I
    MethodParameters:
                          Name  Flags
      sendMaxConcurrentStreams  

  public int getReceiveMaxConcurrentStreams();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 733
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public void handleWindowUpdate(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
        start local 2 // int deltaWindowSize
         0: .line 737
            iload 1 /* streamId */
            ifne 18
         1: .line 738
            iload 2 /* deltaWindowSize */
            ifne 5
         2: .line 739
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Invalid flow-control window increment of 0 received with WINDOW_UPDATE frame for connection"
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
         3: .line 740
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         4: .line 741
            return
         5: .line 744
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         6: .line 745
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            ldc 2
            lcmp
            ifgt 7
            iconst_1
            goto 8
      StackMap locals: java.lang.Object
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 4 /* exhausted */
        start local 4 // boolean exhausted
         9: .line 747
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            iload 2 /* deltaWindowSize */
            i2l
            ladd
            putfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
        10: .line 748
            iload 4 /* exhausted */
            ifeq 12
        11: .line 749
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.notifyFlowControlAllowed:()V
        12: .line 751
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            ldc 2147483647
            lcmp
            ifle 14
        13: .line 752
            aload 0 /* this */
            iconst_3
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        end local 4 // boolean exhausted
        14: .line 744
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        15: goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 3
            monitorexit
        17: athrow
        18: .line 756
      StackMap locals:
      StackMap stack:
            iload 2 /* deltaWindowSize */
            ifne 22
        19: .line 757
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            new java.lang.StringBuilder
            dup
            ldc "Invalid flow-control window increment of 0 received with WINDOW_UPDATE frame for stream "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* streamId */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
        20: .line 758
            aload 0 /* this */
            iload 1 /* streamId */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendRstStream:(II)V
        21: .line 759
            return
        22: .line 761
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 3 /* holder */
        start local 3 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        23: .line 762
            aload 3 /* holder */
            ifnull 24
            aload 3 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            goto 25
      StackMap locals: io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
        24: aconst_null
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2StreamSinkChannel
        25: astore 4 /* stream */
        start local 4 // io.undertow.protocols.http2.Http2StreamSinkChannel stream
        26: .line 763
            aload 4 /* stream */
            ifnonnull 30
        27: .line 764
            aload 0 /* this */
            iload 1 /* streamId */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isIdle:(I)Z
            ifeq 31
        28: .line 765
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        29: .line 767
            goto 31
        30: .line 768
      StackMap locals: io.undertow.protocols.http2.Http2StreamSinkChannel
      StackMap stack:
            aload 4 /* stream */
            iload 2 /* deltaWindowSize */
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.updateFlowControlWindow:(I)V
        end local 4 // io.undertow.protocols.http2.Http2StreamSinkChannel stream
        end local 3 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        31: .line 771
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int deltaWindowSize
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   32     0             this  Lio/undertow/protocols/http2/Http2Channel;
            0   32     1         streamId  I
            0   32     2  deltaWindowSize  I
            9   14     4        exhausted  Z
           23   31     3           holder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
           26   31     4           stream  Lio/undertow/protocols/http2/Http2StreamSinkChannel;
      Exception table:
        from    to  target  type
           6    15      16  any
          16    17      16  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      streamId         
      deltaWindowSize  

  synchronized void notifyFlowControlAllowed();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 774
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.recalculateHeldFrames:()V
         1: .line 775
            return
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2Channel;
    Exceptions:
      throws java.io.IOException

  public void sendPing(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // byte[] data
         0: .line 778
            aload 0 /* this */
            aload 1 /* data */
            new io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPing:([BLorg/xnio/ChannelExceptionHandler;)V
         1: .line 779
            return
        end local 1 // byte[] data
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    2     1  data  [B
    MethodParameters:
      Name  Flags
      data  

  public void sendPing(byte[], org.xnio.ChannelExceptionHandler<io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel>);
    descriptor: ([BLorg/xnio/ChannelExceptionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // byte[] data
        start local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
         0: .line 782
            aload 0 /* this */
            aload 1 /* data */
            aload 2 /* exceptionHandler */
            iconst_0
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPing:([BLorg/xnio/ChannelExceptionHandler;Z)V
         1: .line 783
            return
        end local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
        end local 1 // byte[] data
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lio/undertow/protocols/http2/Http2Channel;
            0    2     1              data  [B
            0    2     2  exceptionHandler  Lorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;
    Signature: ([BLorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;)V
    MethodParameters:
                  Name  Flags
      data              
      exceptionHandler  final

  void sendPing(byte[], org.xnio.ChannelExceptionHandler<io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel>, );
    descriptor: ([BLorg/xnio/ChannelExceptionHandler;Z)V
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // byte[] data
        start local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
        start local 3 // boolean ack
         0: .line 786
            new io.undertow.protocols.http2.Http2PingStreamSinkChannel
            dup
            aload 0 /* this */
            aload 1 /* data */
            iload 3 /* ack */
            invokespecial io.undertow.protocols.http2.Http2PingStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;[BZ)V
            astore 4 /* ping */
        start local 4 // io.undertow.protocols.http2.Http2PingStreamSinkChannel ping
         1: .line 788
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.shutdownWrites:()V
         2: .line 789
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.flush:()Z
            ifne 17
         3: .line 790
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            aconst_null
            aload 2 /* exceptionHandler */
            invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         4: .line 791
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.resumeWrites:()V
         5: .line 793
            goto 17
      StackMap locals: io.undertow.protocols.http2.Http2Channel byte[] org.xnio.ChannelExceptionHandler int io.undertow.protocols.http2.Http2PingStreamSinkChannel
      StackMap stack: java.io.IOException
         6: astore 5 /* e */
        start local 5 // java.io.IOException e
         7: .line 794
            aload 2 /* exceptionHandler */
            ifnull 10
         8: .line 795
            aload 2 /* exceptionHandler */
            aload 4 /* ping */
            aload 5 /* e */
            invokeinterface org.xnio.ChannelExceptionHandler.handleException:(Ljava/nio/channels/Channel;Ljava/io/IOException;)V
         9: .line 796
            goto 17
        10: .line 797
      StackMap locals: java.io.IOException
      StackMap stack:
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Failed to send ping and no exception handler set"
            aload 5 /* e */
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // java.io.IOException e
        11: goto 17
        12: .line 799
      StackMap locals: io.undertow.protocols.http2.Http2Channel byte[] org.xnio.ChannelExceptionHandler int io.undertow.protocols.http2.Http2PingStreamSinkChannel
      StackMap stack: java.lang.Throwable
            astore 5 /* t */
        start local 5 // java.lang.Throwable t
        13: .line 800
            aload 2 /* exceptionHandler */
            ifnull 16
        14: .line 801
            aload 2 /* exceptionHandler */
            aload 4 /* ping */
            new java.io.IOException
            dup
            aload 5 /* t */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            invokeinterface org.xnio.ChannelExceptionHandler.handleException:(Ljava/nio/channels/Channel;Ljava/io/IOException;)V
        15: .line 802
            goto 17
        16: .line 803
      StackMap locals: java.lang.Throwable
      StackMap stack:
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Failed to send ping and no exception handler set"
            aload 5 /* t */
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // java.lang.Throwable t
        17: .line 806
      StackMap locals:
      StackMap stack:
            return
        end local 4 // io.undertow.protocols.http2.Http2PingStreamSinkChannel ping
        end local 3 // boolean ack
        end local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
        end local 1 // byte[] data
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0              this  Lio/undertow/protocols/http2/Http2Channel;
            0   18     1              data  [B
            0   18     2  exceptionHandler  Lorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;
            0   18     3               ack  Z
            1   18     4              ping  Lio/undertow/protocols/http2/Http2PingStreamSinkChannel;
            7   11     5                 e  Ljava/io/IOException;
           13   17     5                 t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     5       6  Class java.io.IOException
           1     5      12  Class java.lang.Throwable
    Signature: ([BLorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;Z)V
    MethodParameters:
                  Name  Flags
      data              
      exceptionHandler  final
      ack               

  public void sendGoAway(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int status
         0: .line 809
            aload 0 /* this */
            iload 1 /* status */
            new io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(ILorg/xnio/ChannelExceptionHandler;)V
         1: .line 810
            return
        end local 1 // int status
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/undertow/protocols/http2/Http2Channel;
            0    2     1  status  I
    MethodParameters:
        Name  Flags
      status  

  public void sendGoAway(int, org.xnio.ChannelExceptionHandler<io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel>);
    descriptor: (ILorg/xnio/ChannelExceptionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int status
        start local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
         0: .line 813
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
            ifeq 2
         1: .line 814
            return
         2: .line 816
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
         3: .line 817
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            invokeinterface io.undertow.UndertowLogger.isTraceEnabled:()Z
            ifeq 5
         4: .line 818
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            ldc "Sending goaway on channel %s"
            aload 0 /* this */
            invokeinterface io.undertow.UndertowLogger.tracef:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 820
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel
            dup
            aload 0 /* this */
            iload 1 /* status */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            invokespecial io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;II)V
            astore 3 /* goAway */
        start local 3 // io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel goAway
         6: .line 822
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.shutdownWrites:()V
         7: .line 823
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.flush:()Z
            ifne 13
         8: .line 824
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            new io.undertow.protocols.http2.Http2Channel$3
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2Channel$3.<init>:(Lio/undertow/protocols/http2/Http2Channel;)V
         9: .line 829
            aload 2 /* exceptionHandler */
        10: .line 824
            invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
        11: .line 830
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.resumeWrites:()V
        12: .line 831
            goto 20
        13: .line 832
      StackMap locals: io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel
      StackMap stack:
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        14: .line 834
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        15: astore 4 /* e */
        start local 4 // java.io.IOException e
        16: .line 835
            aload 2 /* exceptionHandler */
            aload 3 /* goAway */
            aload 4 /* e */
            invokeinterface org.xnio.ChannelExceptionHandler.handleException:(Ljava/nio/channels/Channel;Ljava/io/IOException;)V
        end local 4 // java.io.IOException e
        17: goto 20
        18: .line 836
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* t */
        start local 4 // java.lang.Throwable t
        19: .line 837
            aload 2 /* exceptionHandler */
            aload 3 /* goAway */
            new java.io.IOException
            dup
            aload 4 /* t */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            invokeinterface org.xnio.ChannelExceptionHandler.handleException:(Ljava/nio/channels/Channel;Ljava/io/IOException;)V
        end local 4 // java.lang.Throwable t
        20: .line 839
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel goAway
        end local 2 // org.xnio.ChannelExceptionHandler exceptionHandler
        end local 1 // int status
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   21     0              this  Lio/undertow/protocols/http2/Http2Channel;
            0   21     1            status  I
            0   21     2  exceptionHandler  Lorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;
            6   21     3            goAway  Lio/undertow/protocols/http2/Http2GoAwayStreamSinkChannel;
           16   17     4                 e  Ljava/io/IOException;
           19   20     4                 t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6    14      15  Class java.io.IOException
           6    14      18  Class java.lang.Throwable
    Signature: (ILorg/xnio/ChannelExceptionHandler<Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;)V
    MethodParameters:
                  Name  Flags
      status            
      exceptionHandler  final

  public void sendUpdateWindowSize(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
        start local 2 // int delta
         0: .line 842
            new io.undertow.protocols.http2.Http2WindowUpdateStreamSinkChannel
            dup
            aload 0 /* this */
            iload 1 /* streamId */
            iload 2 /* delta */
            invokespecial io.undertow.protocols.http2.Http2WindowUpdateStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;II)V
            astore 3 /* windowUpdateStreamSinkChannel */
        start local 3 // io.undertow.protocols.http2.Http2WindowUpdateStreamSinkChannel windowUpdateStreamSinkChannel
         1: .line 843
            aload 0 /* this */
            aload 3 /* windowUpdateStreamSinkChannel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
         2: .line 845
            return
        end local 3 // io.undertow.protocols.http2.Http2WindowUpdateStreamSinkChannel windowUpdateStreamSinkChannel
        end local 2 // int delta
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    3     0                           this  Lio/undertow/protocols/http2/Http2Channel;
            0    3     1                       streamId  I
            0    3     2                          delta  I
            1    3     3  windowUpdateStreamSinkChannel  Lio/undertow/protocols/http2/Http2WindowUpdateStreamSinkChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      streamId  
      delta     

  public javax.net.ssl.SSLSession getSslSession();
    descriptor: ()Ljavax/net/ssl/SSLSession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 848
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getUnderlyingConnection:()Lorg/xnio/StreamConnection;
            astore 1 /* con */
        start local 1 // org.xnio.StreamConnection con
         1: .line 849
            aload 1 /* con */
            instanceof org.xnio.ssl.SslConnection
            ifeq 3
         2: .line 850
            aload 1 /* con */
            checkcast org.xnio.ssl.SslConnection
            invokevirtual org.xnio.ssl.SslConnection.getSslSession:()Ljavax/net/ssl/SSLSession;
            areturn
         3: .line 852
      StackMap locals: org.xnio.StreamConnection
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.xnio.StreamConnection con
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/protocols/http2/Http2Channel;
            1    4     1   con  Lorg/xnio/StreamConnection;

  public void updateReceiveFlowControlWindow(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int read
         0: .line 856
            iload 1 /* read */
            ifgt 2
         1: .line 857
            return
         2: .line 859
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 2 /* delta */
        start local 2 // int delta
         3: .line 860
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 861
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            iload 1 /* read */
            isub
            putfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
         5: .line 863
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            istore 4 /* initialWindowSize */
        start local 4 // int initialWindowSize
         6: .line 864
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            iload 4 /* initialWindowSize */
            iconst_2
            idiv
            if_icmpge 9
         7: .line 865
            iload 4 /* initialWindowSize */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            isub
            istore 2 /* delta */
         8: .line 866
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            iload 2 /* delta */
            iadd
            putfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
        end local 4 // int initialWindowSize
         9: .line 860
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 869
      StackMap locals:
      StackMap stack:
            iload 2 /* delta */
            ifle 15
        14: .line 870
            aload 0 /* this */
            iconst_0
            iload 2 /* delta */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendUpdateWindowSize:(II)V
        15: .line 872
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int delta
        end local 1 // int read
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   16     0               this  Lio/undertow/protocols/http2/Http2Channel;
            0   16     1               read  I
            3   16     2              delta  I
            6    9     4  initialWindowSize  I
      Exception table:
        from    to  target  type
           4    10      11  any
          11    12      11  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      read  

  public synchronized io.undertow.protocols.http2.Http2HeadersStreamSinkChannel createStream(io.undertow.util.HeaderMap);
    descriptor: (Lio/undertow/util/HeaderMap;)Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.HeaderMap requestHeaders
         0: .line 882
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifne 2
         1: .line 883
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.headersStreamCanOnlyBeCreatedByClient:()Ljava/io/IOException;
            athrow
         2: .line 885
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 4
         3: .line 886
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         4: .line 888
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.incrementAndGet:(Ljava/lang/Object;)I
            pop
         5: .line 889
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
            ifle 7
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendConcurrentStreams:I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
            if_icmple 7
         6: .line 890
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamLimitExceeded:()Ljava/io/IOException;
            athrow
         7: .line 892
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            istore 2 /* streamId */
        start local 2 // int streamId
         8: .line 893
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            iconst_2
            iadd
            putfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
         9: .line 894
            new io.undertow.protocols.http2.Http2HeadersStreamSinkChannel
            dup
            aload 0 /* this */
            iload 2 /* streamId */
            aload 1 /* requestHeaders */
            invokespecial io.undertow.protocols.http2.Http2HeadersStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;ILio/undertow/util/HeaderMap;)V
            astore 3 /* http2SynStreamStreamSinkChannel */
        start local 3 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel http2SynStreamStreamSinkChannel
        10: .line 895
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 2 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.undertow.protocols.http2.Http2Channel$StreamHolder
            dup
            aload 3 /* http2SynStreamStreamSinkChannel */
            invokespecial io.undertow.protocols.http2.Http2Channel$StreamHolder.<init>:(Lio/undertow/protocols/http2/Http2StreamSinkChannel;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 897
            aload 3 /* http2SynStreamStreamSinkChannel */
            areturn
        end local 3 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel http2SynStreamStreamSinkChannel
        end local 2 // int streamId
        end local 1 // io.undertow.util.HeaderMap requestHeaders
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                             Name  Signature
            0   12     0                             this  Lio/undertow/protocols/http2/Http2Channel;
            0   12     1                   requestHeaders  Lio/undertow/util/HeaderMap;
            8   12     2                         streamId  I
           10   12     3  http2SynStreamStreamSinkChannel  Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      requestHeaders  

  public synchronized io.undertow.protocols.http2.Http2HeadersStreamSinkChannel sendPushPromise(int, io.undertow.util.HeaderMap, io.undertow.util.HeaderMap);
    descriptor: (ILio/undertow/util/HeaderMap;Lio/undertow/util/HeaderMap;)Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int associatedStreamId
        start local 2 // io.undertow.util.HeaderMap requestHeaders
        start local 3 // io.undertow.util.HeaderMap responseHeaders
         0: .line 901
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 2
         1: .line 902
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 904
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 4
         3: .line 905
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.pushPromiseCanOnlyBeCreatedByServer:()Ljava/io/IOException;
            athrow
         4: .line 907
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.incrementAndGet:(Ljava/lang/Object;)I
            pop
         5: .line 908
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
            ifle 7
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendConcurrentStreams:I
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
            if_icmple 7
         6: .line 909
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamLimitExceeded:()Ljava/io/IOException;
            athrow
         7: .line 911
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            istore 4 /* streamId */
        start local 4 // int streamId
         8: .line 912
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            iconst_2
            iadd
            putfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
         9: .line 913
            new io.undertow.protocols.http2.Http2PushPromiseStreamSinkChannel
            dup
            aload 0 /* this */
            aload 2 /* requestHeaders */
            iload 1 /* associatedStreamId */
            iload 4 /* streamId */
            invokespecial io.undertow.protocols.http2.Http2PushPromiseStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/util/HeaderMap;II)V
            astore 5 /* pushPromise */
        start local 5 // io.undertow.protocols.http2.Http2PushPromiseStreamSinkChannel pushPromise
        10: .line 914
            aload 0 /* this */
            aload 5 /* pushPromise */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
        11: .line 916
            new io.undertow.protocols.http2.Http2HeadersStreamSinkChannel
            dup
            aload 0 /* this */
            iload 4 /* streamId */
            aload 3 /* responseHeaders */
            invokespecial io.undertow.protocols.http2.Http2HeadersStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;ILio/undertow/util/HeaderMap;)V
            astore 6 /* http2SynStreamStreamSinkChannel */
        start local 6 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel http2SynStreamStreamSinkChannel
        12: .line 917
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 4 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.undertow.protocols.http2.Http2Channel$StreamHolder
            dup
            aload 6 /* http2SynStreamStreamSinkChannel */
            invokespecial io.undertow.protocols.http2.Http2Channel$StreamHolder.<init>:(Lio/undertow/protocols/http2/Http2StreamSinkChannel;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 918
            aload 6 /* http2SynStreamStreamSinkChannel */
            areturn
        end local 6 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel http2SynStreamStreamSinkChannel
        end local 5 // io.undertow.protocols.http2.Http2PushPromiseStreamSinkChannel pushPromise
        end local 4 // int streamId
        end local 3 // io.undertow.util.HeaderMap responseHeaders
        end local 2 // io.undertow.util.HeaderMap requestHeaders
        end local 1 // int associatedStreamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot                             Name  Signature
            0   14     0                             this  Lio/undertow/protocols/http2/Http2Channel;
            0   14     1               associatedStreamId  I
            0   14     2                   requestHeaders  Lio/undertow/util/HeaderMap;
            0   14     3                  responseHeaders  Lio/undertow/util/HeaderMap;
            8   14     4                         streamId  I
           10   14     5                      pushPromise  Lio/undertow/protocols/http2/Http2PushPromiseStreamSinkChannel;
           12   14     6  http2SynStreamStreamSinkChannel  Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                    Name  Flags
      associatedStreamId  
      requestHeaders      
      responseHeaders     

  int grabFlowControlBytes(int);
    descriptor: (I)I
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int bytesToGrab
         0: .line 928
            iload 1 /* bytesToGrab */
            ifgt 2
         1: .line 929
            iconst_0
            ireturn
         2: .line 932
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 933
            iload 1 /* bytesToGrab */
            i2l
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 2 /* min */
        start local 2 // int min
         4: .line 934
            iload 1 /* bytesToGrab */
            iconst_2
            if_icmple 7
            iload 2 /* min */
            iconst_2
            if_icmpgt 7
         5: .line 936
            aload 3
            monitorexit
         6: iconst_0
            ireturn
         7: .line 938
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxFrameSize:I
            iload 2 /* min */
            invokestatic java.lang.Math.min:(II)I
            istore 2 /* min */
         8: .line 939
            aload 0 /* this */
            dup
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            iload 2 /* min */
            i2l
            lsub
            putfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
         9: .line 932
            aload 3
            monitorexit
        10: goto 13
        end local 2 // int min
      StackMap locals: io.undertow.protocols.http2.Http2Channel int top java.lang.Object
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        start local 2 // int min
        13: .line 941
      StackMap locals: io.undertow.protocols.http2.Http2Channel int int
      StackMap stack:
            iload 2 /* min */
            ireturn
        end local 2 // int min
        end local 1 // int bytesToGrab
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lio/undertow/protocols/http2/Http2Channel;
            0   14     1  bytesToGrab  I
            4   11     2          min  I
           13   14     2          min  I
      Exception table:
        from    to  target  type
           3     6      11  any
           7    10      11  any
          11    12      11  any
    MethodParameters:
             Name  Flags
      bytesToGrab  

  void registerStreamSink(io.undertow.protocols.http2.Http2HeadersStreamSinkChannel);
    descriptor: (Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel synResponse
         0: .line 945
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            aload 1 /* synResponse */
            invokevirtual io.undertow.protocols.http2.Http2HeadersStreamSinkChannel.getStreamId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 2 /* existing */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
         1: .line 946
            aload 2 /* existing */
            ifnonnull 3
         2: .line 947
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamNotRegistered:()Ljava/lang/IllegalStateException;
            athrow
         3: .line 949
      StackMap locals: io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 2 /* existing */
            aload 1 /* synResponse */
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
         4: .line 950
            return
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        end local 1 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel synResponse
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lio/undertow/protocols/http2/Http2Channel;
            0    5     1  synResponse  Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
            1    5     2     existing  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
    MethodParameters:
             Name  Flags
      synResponse  

  void removeStreamSink(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
         0: .line 953
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 2 /* existing */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
         1: .line 954
            aload 2 /* existing */
            ifnonnull 3
         2: .line 955
            return
         3: .line 957
      StackMap locals: io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 2 /* existing */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
         4: .line 958
            aload 2 /* existing */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
         5: .line 959
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
            ifeq 13
         6: .line 960
            iload 1 /* streamId */
            iconst_2
            irem
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack: int
         7: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2Channel int io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack: int int
         8: if_icmpne 11
         9: .line 961
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
        10: .line 962
            goto 12
        11: .line 963
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
        12: .line 965
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 967
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isLastFrameReceived:()Z
            ifeq 16
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 16
        14: .line 968
            aload 0 /* this */
            iconst_0
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        15: .line 969
            goto 18
      StackMap locals:
      StackMap stack:
        16: aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 18
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 18
        17: .line 970
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.connectionIdle:()V
        18: .line 972
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0   19     1  streamId  I
            1   19     2  existing  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
    MethodParameters:
          Name  Flags
      streamId  

  public boolean isClient();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 975
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            iconst_2
            irem
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2Channel;

  io.undertow.protocols.http2.HpackEncoder getEncoder();
    descriptor: ()Lio/undertow/protocols/http2/HpackEncoder;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 980
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  io.undertow.protocols.http2.HpackDecoder getDecoder();
    descriptor: ()Lio/undertow/protocols/http2/HpackDecoder;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 984
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.decoder:Lio/undertow/protocols/http2/HpackDecoder;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  int getMaxHeaders();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 988
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxHeaders:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  int getPaddingBytes();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 992
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
            ifnonnull 2
         1: .line 993
            iconst_0
            ireturn
         2: .line 995
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxPadding:I
            invokevirtual java.util.Random.nextInt:(I)I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public <T> T getAttachment(io.undertow.util.AttachmentKey<T>);
    descriptor: (Lio/undertow/util/AttachmentKey;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.AttachmentKey key
         0: .line 1000
            aload 1 /* key */
            ifnonnull 2
         1: .line 1001
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1003
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // io.undertow.util.AttachmentKey key
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    3     1   key  Lio/undertow/util/AttachmentKey<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/undertow/util/AttachmentKey<TT;>;)TT;
    MethodParameters:
      Name  Flags
      key   

  public <T> java.util.List<T> getAttachmentList(io.undertow.util.AttachmentKey<? extends java.util.List<T>>);
    descriptor: (Lio/undertow/util/AttachmentKey;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.AttachmentKey key
         0: .line 1008
            aload 1 /* key */
            ifnonnull 2
         1: .line 1009
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1011
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* o */
        start local 2 // java.lang.Object o
         3: .line 1012
            aload 2 /* o */
            ifnonnull 5
         4: .line 1013
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         5: .line 1015
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* o */
            checkcast java.util.List
            areturn
        end local 2 // java.lang.Object o
        end local 1 // io.undertow.util.AttachmentKey key
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    6     1   key  Lio/undertow/util/AttachmentKey<+Ljava/util/List<TT;>;>;
            3    6     2     o  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lio/undertow/util/AttachmentKey<+Ljava/util/List<TT;>;>;)Ljava/util/List<TT;>;
    MethodParameters:
      Name  Flags
      key   

  public <T> T putAttachment(io.undertow.util.AttachmentKey<T>, );
    descriptor: (Lio/undertow/util/AttachmentKey;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.AttachmentKey key
        start local 2 // java.lang.Object value
         0: .line 1020
            aload 1 /* key */
            ifnonnull 2
         1: .line 1021
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1023
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
            aload 1 /* key */
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual io.undertow.util.AttachmentKey.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual io.undertow.util.AttachmentKey.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // io.undertow.util.AttachmentKey key
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/undertow/protocols/http2/Http2Channel;
            0    3     1    key  Lio/undertow/util/AttachmentKey<TT;>;
            0    3     2  value  TT;
    Signature: <T:Ljava/lang/Object;>(Lio/undertow/util/AttachmentKey<TT;>;TT;)TT;
    MethodParameters:
       Name  Flags
      key    
      value  

  public <T> T removeAttachment(io.undertow.util.AttachmentKey<T>);
    descriptor: (Lio/undertow/util/AttachmentKey;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.AttachmentKey key
         0: .line 1028
            aload 1 /* key */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual io.undertow.util.AttachmentKey.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // io.undertow.util.AttachmentKey key
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;
            0    1     1   key  Lio/undertow/util/AttachmentKey<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/undertow/util/AttachmentKey<TT;>;)TT;
    MethodParameters:
      Name  Flags
      key   

  public <T> void addToAttachmentList(io.undertow.util.AttachmentKey<io.undertow.util.AttachmentList<T>>, );
    descriptor: (Lio/undertow/util/AttachmentKey;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // io.undertow.util.AttachmentKey key
        start local 2 // java.lang.Object value
         0: .line 1034
            aload 1 /* key */
            ifnonnull 2
         1: .line 1035
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1037
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.attachments:Ljava/util/Map;
            astore 3 /* attachments */
        start local 3 // java.util.Map attachments
         3: .line 1038
            aload 3 /* attachments */
            dup
            astore 4
            monitorenter
         4: .line 1039
            aload 1 /* key */
            aload 3 /* attachments */
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual io.undertow.util.AttachmentKey.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 5 /* list */
        start local 5 // java.util.List list
         5: .line 1040
            aload 5 /* list */
            ifnonnull 10
         6: .line 1041
            new io.undertow.util.AttachmentList
            dup
            ldc Ljava/lang/Object;
            invokespecial io.undertow.util.AttachmentList.<init>:(Ljava/lang/Class;)V
            astore 6 /* newList */
        start local 6 // io.undertow.util.AttachmentList newList
         7: .line 1042
            aload 3 /* attachments */
            aload 1 /* key */
            aload 6 /* newList */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 1043
            aload 6 /* newList */
            aload 2 /* value */
            invokevirtual io.undertow.util.AttachmentList.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // io.undertow.util.AttachmentList newList
         9: .line 1044
            goto 11
        10: .line 1045
      StackMap locals: java.util.Map java.util.Map java.util.List
      StackMap stack:
            aload 5 /* list */
            aload 2 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.util.List list
        11: .line 1038
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 4
            monitorexit
        14: athrow
        15: .line 1048
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.Map attachments
        end local 2 // java.lang.Object value
        end local 1 // io.undertow.util.AttachmentKey key
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lio/undertow/protocols/http2/Http2Channel;
            0   16     1          key  Lio/undertow/util/AttachmentKey<Lio/undertow/util/AttachmentList<TT;>;>;
            0   16     2        value  TT;
            3   16     3  attachments  Ljava/util/Map<Lio/undertow/util/AttachmentKey<*>;Ljava/lang/Object;>;
            5   11     5         list  Ljava/util/List<TT;>;
            7    9     6      newList  Lio/undertow/util/AttachmentList<TT;>;
      Exception table:
        from    to  target  type
           4    12      13  any
          13    14      13  any
    Signature: <T:Ljava/lang/Object;>(Lio/undertow/util/AttachmentKey<Lio/undertow/util/AttachmentList<TT;>;>;TT;)V
    MethodParameters:
       Name  Flags
      key    
      value  

  public void sendRstStream(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
        start local 2 // int statusCode
         0: .line 1051
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 2
         1: .line 1053
            return
         2: .line 1055
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* streamId */
            invokevirtual io.undertow.protocols.http2.Http2Channel.handleRstStream:(I)V
         3: .line 1056
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            invokeinterface io.undertow.UndertowLogger.isDebugEnabled:()Z
            ifeq 5
         4: .line 1057
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            ldc "Sending rststream on channel %s stream %s"
            aload 0 /* this */
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 1059
      StackMap locals:
      StackMap stack:
            new io.undertow.protocols.http2.Http2RstStreamSinkChannel
            dup
            aload 0 /* this */
            iload 1 /* streamId */
            iload 2 /* statusCode */
            invokespecial io.undertow.protocols.http2.Http2RstStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;II)V
            astore 3 /* channel */
        start local 3 // io.undertow.protocols.http2.Http2RstStreamSinkChannel channel
         6: .line 1060
            aload 0 /* this */
            aload 3 /* channel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         7: .line 1061
            return
        end local 3 // io.undertow.protocols.http2.Http2RstStreamSinkChannel channel
        end local 2 // int statusCode
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lio/undertow/protocols/http2/Http2Channel;
            0    8     1    streamId  I
            0    8     2  statusCode  I
            6    8     3     channel  Lio/undertow/protocols/http2/Http2RstStreamSinkChannel;
    MethodParameters:
            Name  Flags
      streamId    
      statusCode  

  private void handleRstStream(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
         0: .line 1064
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 2 /* holder */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
         1: .line 1065
            aload 2 /* holder */
            ifnull 12
         2: .line 1066
            iload 1 /* streamId */
            iconst_2
            irem
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 3
            iconst_1
            goto 4
      StackMap locals: io.undertow.protocols.http2.Http2Channel int io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack: int
         3: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2Channel int io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack: int int
         4: if_icmpne 7
         5: .line 1067
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
         6: .line 1068
            goto 8
         7: .line 1069
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
         8: .line 1071
      StackMap locals:
      StackMap stack:
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            ifnull 10
         9: .line 1072
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.rstStream:()V
        10: .line 1074
      StackMap locals:
      StackMap stack:
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 12
        11: .line 1075
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            invokevirtual io.undertow.protocols.http2.Http2StreamSourceChannel.rstStream:()V
        12: .line 1078
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder holder
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0   13     1  streamId  I
            1   13     2    holder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
    MethodParameters:
          Name  Flags
      streamId  

  public io.undertow.protocols.http2.Http2HeadersStreamSinkChannel createInitialUpgradeResponseStream();
    descriptor: ()Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 1086
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            ifeq 2
         1: .line 1087
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 1089
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
         3: .line 1090
            new io.undertow.protocols.http2.Http2HeadersStreamSinkChannel
            dup
            aload 0 /* this */
            iconst_1
            invokespecial io.undertow.protocols.http2.Http2HeadersStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;I)V
            astore 1 /* stream */
        start local 1 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel stream
         4: .line 1091
            new io.undertow.protocols.http2.Http2Channel$StreamHolder
            dup
            aload 1 /* stream */
            invokespecial io.undertow.protocols.http2.Http2Channel$StreamHolder.<init>:(Lio/undertow/protocols/http2/Http2StreamSinkChannel;)V
            astore 2 /* streamHolder */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder streamHolder
         5: .line 1092
            aload 2 /* streamHolder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
         6: .line 1093
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 2 /* streamHolder */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 1094
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndIncrement:(Ljava/lang/Object;)I
            pop
         8: .line 1095
            aload 1 /* stream */
            areturn
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder streamHolder
        end local 1 // io.undertow.protocols.http2.Http2HeadersStreamSinkChannel stream
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lio/undertow/protocols/http2/Http2Channel;
            4    9     1        stream  Lio/undertow/protocols/http2/Http2HeadersStreamSinkChannel;
            5    9     2  streamHolder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;

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

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

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

  io.undertow.protocols.http2.Http2StreamSourceChannel removeStreamSource(int);
    descriptor: (I)Lio/undertow/protocols/http2/Http2StreamSourceChannel;
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
         0: .line 1112
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 2 /* existing */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
         1: .line 1113
            aload 2 /* existing */
            ifnonnull 3
         2: .line 1114
            aconst_null
            areturn
         3: .line 1116
      StackMap locals: io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 2 /* existing */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
         4: .line 1117
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            astore 3 /* ret */
        start local 3 // io.undertow.protocols.http2.Http2StreamSourceChannel ret
         5: .line 1118
            aload 2 /* existing */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
         6: .line 1119
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
            ifeq 14
         7: .line 1120
            iload 1 /* streamId */
            iconst_2
            irem
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 8
            iconst_1
            goto 9
      StackMap locals: io.undertow.protocols.http2.Http2Channel int io.undertow.protocols.http2.Http2Channel$StreamHolder io.undertow.protocols.http2.Http2StreamSourceChannel
      StackMap stack: int
         8: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2Channel int io.undertow.protocols.http2.Http2Channel$StreamHolder io.undertow.protocols.http2.Http2StreamSourceChannel
      StackMap stack: int int
         9: if_icmpne 12
        10: .line 1121
            getstatic io.undertow.protocols.http2.Http2Channel.sendConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
        11: .line 1122
            goto 13
        12: .line 1123
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreamsAtomicUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.getAndDecrement:(Ljava/lang/Object;)I
            pop
        13: .line 1125
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 1127
      StackMap locals:
      StackMap stack:
            aload 3 /* ret */
            areturn
        end local 3 // io.undertow.protocols.http2.Http2StreamSourceChannel ret
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0   15     1  streamId  I
            1   15     2  existing  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
            5   15     3       ret  Lio/undertow/protocols/http2/Http2StreamSourceChannel;
    MethodParameters:
          Name  Flags
      streamId  

  io.undertow.protocols.http2.Http2StreamSourceChannel getIncomingStream(int);
    descriptor: (I)Lio/undertow/protocols/http2/Http2StreamSourceChannel;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamId
         0: .line 1131
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.currentStreams:Ljava/util/Map;
            iload 1 /* streamId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.undertow.protocols.http2.Http2Channel$StreamHolder
            astore 2 /* existing */
        start local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
         1: .line 1132
            aload 2 /* existing */
            ifnonnull 3
         2: .line 1133
            aconst_null
            areturn
         3: .line 1135
      StackMap locals: io.undertow.protocols.http2.Http2Channel$StreamHolder
      StackMap stack:
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            areturn
        end local 2 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        end local 1 // int streamId
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0    4     1  streamId  I
            1    4     2  existing  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
    MethodParameters:
          Name  Flags
      streamId  

  public int getReceiveMaxFrameSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 1147
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public int getSendMaxFrameSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 1151
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendMaxFrameSize:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  public java.lang.String getProtocol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 1155
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.protocol:Ljava/lang/String;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  private synchronized boolean isIdle(int);
    descriptor: (I)Z
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2Channel this
        start local 1 // int streamNo
         0: .line 1159
            iload 1 /* streamNo */
            iconst_2
            irem
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            iconst_2
            irem
            if_icmpne 3
         1: .line 1160
            iload 1 /* streamNo */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
            if_icmplt 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 1162
      StackMap locals:
      StackMap stack:
            iload 1 /* streamNo */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            if_icmple 4
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 1 // int streamNo
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lio/undertow/protocols/http2/Http2Channel;
            0    5     1  streamNo  I
    MethodParameters:
          Name  Flags
      streamNo  

  int getMaxHeaderListSize();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2Channel this
         0: .line 1167
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxHeaderListSize:I
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2Channel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2Channel;

  protected io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel createChannel(io.undertow.server.protocol.framed.FrameHeaderData, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/server/protocol/framed/AbstractFramedStreamSourceChannel;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual io.undertow.protocols.http2.Http2Channel.createChannel:(Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException
}
Signature: Lio/undertow/server/protocol/framed/AbstractFramedChannel<Lio/undertow/protocols/http2/Http2Channel;Lio/undertow/protocols/http2/AbstractHttp2StreamSourceChannel;Lio/undertow/protocols/http2/AbstractHttp2StreamSinkChannel;>;Lio/undertow/util/Attachable;
SourceFile: "Http2Channel.java"
NestMembers:
  io.undertow.protocols.http2.Http2Channel$1  io.undertow.protocols.http2.Http2Channel$1$1  io.undertow.protocols.http2.Http2Channel$2  io.undertow.protocols.http2.Http2Channel$3  io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler  io.undertow.protocols.http2.Http2Channel$StreamHolder
InnerClasses:
  io.undertow.protocols.http2.Http2Channel$1
  io.undertow.protocols.http2.Http2Channel$2
  io.undertow.protocols.http2.Http2Channel$3
  private Http2ControlMessageExceptionHandler = io.undertow.protocols.http2.Http2Channel$Http2ControlMessageExceptionHandler of io.undertow.protocols.http2.Http2Channel
  private final StreamHolder = io.undertow.protocols.http2.Http2Channel$StreamHolder of io.undertow.protocols.http2.Http2Channel
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public SimpleSetter = org.xnio.ChannelListener$SimpleSetter of org.xnio.ChannelListener