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 final int encoderHeaderTableSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 final int receiveMaxConcurrentStreams;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 final int initialReceiveWindowSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  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 final io.undertow.server.protocol.ParseTimeoutUpdater parseTimeoutUpdater;
    descriptor: Lio/undertow/server/protocol/ParseTimeoutUpdater;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 206
            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 207
            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 210
            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 142
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.sendConcurrentStreams:I
         8: .line 143
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.receiveConcurrentStreams:I
         9: .line 145
            aload 0 /* this */
            sipush 16384
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxFrameSize:I
        10: .line 147
            aload 0 /* this */
            sipush 16384
            putfield io.undertow.protocols.http2.Http2Channel.unackedReceiveMaxFrameSize:I
        11: .line 157
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
        12: .line 158
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
        13: .line 159
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.lastDataRead:Z
        14: .line 171
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
        15: .line 178
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        16: .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;
        17: .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;
        18: .line 189
            aload 0 /* this */
            ldc 65535
            putfield io.undertow.protocols.http2.Http2Channel.initialSendWindowSize:I
        19: .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
        20: .line 211
            aload 0 /* this */
            iload 5 /* clientSide */
            ifeq 22
            iload 6 /* fromUpgrade */
            ifeq 21
            iconst_3
            goto 23
      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
        21: iconst_1
            goto 23
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2Channel
        22: 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
        23: putfield io.undertow.protocols.http2.Http2Channel.streamIdCounter:I
        24: .line 213
            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
        25: .line 214
            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
        26: .line 215
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            putfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
        27: .line 216
            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
        28: .line 218
            aload 0 /* this */
            aload 2 /* protocol */
            ifnonnull 29
            ldc "h2"
            goto 30
      StackMap locals:
      StackMap stack: io.undertow.protocols.http2.Http2Channel
        29: 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
        30: putfield io.undertow.protocols.http2.Http2Channel.protocol:Ljava/lang/String;
        31: .line 219
            aload 0 /* this */
            aload 9 /* settings */
            getstatic io.undertow.UndertowOptions.MAX_HEADERS:Lorg/xnio/Option;
            iload 5 /* clientSide */
            ifeq 32
            iconst_m1
            goto 33
      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
        32: 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
        33: invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.protocols.http2.Http2Channel.maxHeaders:I
        34: .line 221
            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
        35: .line 222
            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
        36: .line 223
            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
        37: .line 224
            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
        38: .line 225
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxPadding:I
            ifle 41
        39: .line 226
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
        40: .line 227
            goto 42
        41: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
        42: .line 231
      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;
        43: .line 232
            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;
        44: .line 233
            iload 7 /* prefaceRequired */
            ifne 46
        45: .line 234
            aload 0 /* this */
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            putfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
        46: .line 237
      StackMap locals:
      StackMap stack:
            iload 5 /* clientSide */
            ifeq 57
        47: .line 238
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPreface:()V
        48: .line 239
            aload 0 /* this */
            getstatic io.undertow.protocols.http2.Http2Channel.PREFACE_BYTES:[B
            arraylength
            putfield io.undertow.protocols.http2.Http2Channel.prefaceCount:I
        49: .line 240
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
        50: .line 241
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        51: .line 242
            iload 6 /* fromUpgrade */
            ifeq 60
        52: .line 243
            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
        53: .line 244
            aload 10 /* streamHolder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
        54: .line 245
            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
        55: .line 246
            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
        56: .line 248
            goto 60
      StackMap locals:
      StackMap stack:
        57: iload 6 /* fromUpgrade */
            ifeq 60
        58: .line 249
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
        59: .line 250
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
        60: .line 252
      StackMap locals:
      StackMap stack:
            aload 8 /* initialOtherSideSettings */
            ifnull 70
        61: .line 253
            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
        62: .line 255
            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
        63: .line 256
            aload 11 /* headerParser */
            aload 8 /* initialOtherSideSettings */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            putfield io.undertow.protocols.http2.Http2FrameHeaderParser.length:I
        64: .line 257
            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
        65: .line 258
            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
        66: .line 259
            goto 70
      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
        67: astore 11 /* e */
        start local 11 // java.lang.Throwable e
        68: .line 260
            aload 1 /* connectedStreamChannel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        69: .line 262
            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
        70: .line 265
      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
        71: .line 266
            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
        72: .line 267
            iload 11 /* requestIdleTimeout */
            ifge 75
            iload 10 /* requestParseTimeout */
            ifge 75
        73: .line 268
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
        74: .line 269
            goto 77
        75: .line 270
      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;
        76: .line 284
            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
        77: .line 291
      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   78     0                      this  Lio/undertow/protocols/http2/Http2Channel;
            0   78     1    connectedStreamChannel  Lorg/xnio/StreamConnection;
            0   78     2                  protocol  Ljava/lang/String;
            0   78     3                bufferPool  Lio/undertow/connector/ByteBufferPool;
            0   78     4                      data  Lio/undertow/connector/PooledByteBuffer;
            0   78     5                clientSide  Z
            0   78     6               fromUpgrade  Z
            0   78     7           prefaceRequired  Z
            0   78     8  initialOtherSideSettings  Ljava/nio/ByteBuffer;
            0   78     9                  settings  Lorg/xnio/OptionMap;
           53   56    10              streamHolder  Lio/undertow/protocols/http2/Http2Channel$StreamHolder;
           62   70    10                    parser  Lio/undertow/protocols/http2/Http2SettingsParser;
           63   66    11              headerParser  Lio/undertow/protocols/http2/Http2FrameHeaderParser;
           68   70    11                         e  Ljava/lang/Throwable;
           71   78    10       requestParseTimeout  I
           72   78    11        requestIdleTimeout  I
      Exception table:
        from    to  target  type
          62    66      67  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 294
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* settings */
        start local 1 // java.util.List settings
         1: .line 295
            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 296
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 7
         3: .line 297
            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 299
      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 300
            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 301
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.maxHeaderListSize:I
            ifle 11
        10: .line 302
            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 304
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxConcurrentStreams:I
            ifle 13
        12: .line 305
            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 307
      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 308
            aload 0 /* this */
            aload 2 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
        15: .line 309
            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 312
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
            ifne 3
         1: .line 313
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
         2: .line 314
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsSent:Z
         3: .line 316
      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 317
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         5: .line 318
            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 322
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
         1: .line 323
            goto 7
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 2 /* e */
        start local 2 // java.io.IOException e
         3: .line 324
            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 325
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* t */
        start local 2 // java.lang.Throwable t
         6: .line 326
            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 328
      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 331
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
         1: .line 332
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.flush:()Z
            ifne 4
         2: .line 333
            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 334
            aload 1 /* stream */
            invokeinterface org.xnio.channels.StreamSinkChannel.resumeWrites:()V
         4: .line 336
      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 339
            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 340
            aload 0 /* this */
            aload 1 /* preface */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         2: .line 341
            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 344
            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 345
            aload 3 /* channel */
            instanceof io.undertow.protocols.http2.Http2StreamSourceChannel
            ifeq 8
         2: .line 346
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 8
         3: .line 347
            aload 3 /* channel */
            ifnull 6
         4: .line 348
            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 349
            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 350
            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 354
      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 359
            aload 1 /* frameHeaderData */
            checkcast io.undertow.protocols.http2.Http2FrameHeaderParser
            astore 3 /* frameParser */
        start local 3 // io.undertow.protocols.http2.Http2FrameHeaderParser frameParser
         1: .line 361
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            ifne 5
         2: .line 364
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         3: .line 365
            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 366
            aconst_null
            areturn
         5: .line 370
      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 376
      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 377
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifne 10
         8: .line 378
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         9: .line 379
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.serverReceivedPushPromise:()Ljava/io/IOException;
            athrow
        10: .line 381
      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 382
            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 383
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2PushPromiseParser pushPromiseParser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        13: .line 388
      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 391
            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 392
            aload 5 /* existing */
            ifnull 16
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
            ifeq 19
        16: .line 393
      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 394
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        18: .line 395
            aconst_null
            areturn
        19: .line 396
      StackMap locals:
      StackMap stack:
            aload 5 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 34
        20: .line 399
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.flags:I
            iconst_1
            invokestatic org.xnio.Bits.allAreSet:(II)Z
            ifne 34
        21: .line 400
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        22: .line 401
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        23: .line 402
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2Channel$StreamHolder existing
        24: .line 406
      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 407
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        26: .line 408
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        27: .line 409
            aconst_null
            areturn
        28: .line 411
      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 412
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        32: .line 413
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        33: .line 414
            aconst_null
            areturn
        34: .line 417
      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 419
            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 420
            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 422
            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 423
            aload 6 /* holder */
            ifnonnull 42
        39: .line 424
            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 425
            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 426
            goto 43
        42: .line 427
      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 429
      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 430
            aload 4 /* channel */
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.lastFrame:()V
        45: .line 431
            aload 6 /* holder */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
        46: .line 433
            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 434
      StackMap locals:
      StackMap stack:
            aload 6 /* holder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
        48: .line 435
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
            ifeq 51
        49: .line 436
            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 437
            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 441
      StackMap locals:
      StackMap stack:
            aload 5 /* parser */
            invokevirtual io.undertow.protocols.http2.Http2HeadersParser.isInvalid:()Z
            ifeq 55
        52: .line 442
            aload 4 /* channel */
            iconst_1
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.rstStream:(I)V
        53: .line 443
            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 444
            aconst_null
            astore 4 /* channel */
        55: .line 446
      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 447
            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 448
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        58: .line 449
            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 457
      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 458
            aload 3 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.streamId:I
            ifne 64
        61: .line 459
            aload 2 /* frameData */
            ifnull 63
        62: .line 460
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        63: .line 462
      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 464
      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 465
            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 466
            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 467
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        68: .line 469
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2RstStreamParser parser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        69: .line 472
      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 473
            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 474
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettingsAck:()V
        72: .line 476
            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 477
            aload 0 /* this */
            bipush 6
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        75: .line 478
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        76: .line 479
            aconst_null
            areturn
        77: .line 481
      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 482
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveMaxFrameSize:I
            putfield io.undertow.protocols.http2.Http2Channel.unackedReceiveMaxFrameSize:I
        79: .line 483
            goto 113
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
        80: .line 486
      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 487
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        82: .line 488
            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 489
            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 490
            iload 6 /* ack */
            ifne 113
        85: .line 491
            aload 0 /* this */
            aload 5 /* pingParser */
            invokevirtual io.undertow.protocols.http2.Http2PingParser.getData:()[B
            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
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendPing:([BLorg/xnio/ChannelExceptionHandler;Z)V
        86: .line 493
            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 496
      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 497
            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 498
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
        90: .line 501
            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 502
            aload 6 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 94
        93: .line 503
            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 505
      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 506
            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 501
      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 509
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        98: .line 510
            aload 0 /* this */
            iconst_0
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        99: .line 511
            goto 113
        end local 5 // io.undertow.protocols.http2.Http2GoAwayParser http2GoAwayParser
        end local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
       100: .line 514
      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 515
            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 516
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       103: .line 518
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2WindowUpdateParser parser
       104: .line 521
      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 522
            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 524
            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 525
            aconst_null
            areturn
       108: .line 527
      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 535
            aconst_null
            areturn
        end local 5 // io.undertow.protocols.http2.Http2PriorityParser parser
       110: .line 538
      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 539
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       112: .line 540
            aconst_null
            areturn
        start local 4 // io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel channel
       113: .line 543
      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 548
            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 549
            goto 6
         2: .line 550
      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 551
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getUnderlyingConnection:()Lorg/xnio/StreamConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         4: .line 552
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.incorrectHttp2Preface:()Ljava/io/IOException;
            athrow
         5: .line 554
      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 549
      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 557
      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 558
            aload 2 /* frameParser */
            ifnonnull 11
         9: .line 559
            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 560
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.continuationParser:Lio/undertow/protocols/http2/Http2HeadersParser;
        11: .line 562
      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 563
            aconst_null
            areturn
        13: .line 565
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialSettingsReceived:Z
            ifne 19
        14: .line 566
            aload 2 /* frameParser */
            getfield io.undertow.protocols.http2.Http2FrameHeaderParser.type:I
            iconst_4
            if_icmpeq 18
        15: .line 567
            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 573
            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 574
            goto 19
        18: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.initialSettingsReceived:Z
        19: .line 578
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel.frameParser:Lio/undertow/protocols/http2/Http2FrameHeaderParser;
        20: .line 579
            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 580
            aload 0 /* this */
            bipush 6
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        22: .line 581
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.http2FrameTooLarge:()Ljava/io/IOException;
            athrow
        23: .line 583
      StackMap locals:
      StackMap stack:
            aload 2 /* frameParser */
            invokevirtual io.undertow.protocols.http2.Http2FrameHeaderParser.getContinuationParser:()Lio/undertow/protocols/http2/Http2HeadersParser;
            ifnull 26
        24: .line 584
            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 585
            aconst_null
            areturn
        26: .line 587
      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 592
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.lastDataRead:Z
         1: .line 593
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
            ifne 4
         2: .line 595
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         3: .line 596
            goto 7
         4: .line 597
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.peerGoneAway:Z
         5: .line 598
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
            ifne 7
         6: .line 600
            aload 0 /* this */
            bipush 10
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         7: .line 603
      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 607
            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 612
            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 617
            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 618
            aload 1 /* e */
            instanceof io.undertow.protocols.http2.ConnectionErrorException
            ifeq 4
         2: .line 619
            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 620
            goto 7
         4: .line 621
      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 623
      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 627
            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 630
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         2: .line 631
            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 636
            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 637
            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 638
            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 639
            aload 4 /* receiver */
            ifnull 6
         5: .line 640
            aload 4 /* receiver */
            invokevirtual io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.markStreamBroken:()V
         6: .line 642
      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 643
            aload 5 /* sink */
            ifnull 11
         8: .line 644
            aload 5 /* sink */
            invokevirtual io.undertow.protocols.http2.Http2StreamSinkChannel.isWritesShutdown:()Z
            ifeq 10
         9: .line 645
            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 647
      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 636
      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 651
            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 655
            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 656
            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 657
            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 658
            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 656
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 661
            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 670
            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 671
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_4
            if_icmpne 13
         3: .line 672
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         4: .line 674
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            ldc 2147483647
            lcmp
            ifle 8
         5: .line 675
            aload 0 /* this */
            iconst_3
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         6: .line 676
            aload 4
            monitorexit
         7: iconst_0
            ireturn
         8: .line 678
      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 672
            aload 4
            monitorexit
        10: goto 38
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 681
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_5
            if_icmpne 20
        14: .line 682
            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 683
      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 684
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        17: .line 685
            iconst_0
            ireturn
        18: .line 687
      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 688
            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 689
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        22: .line 690
            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 689
            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 692
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_2
            if_icmpne 36
        28: .line 694
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getValue:()J
            l2i
            istore 4 /* result */
        start local 4 // int result
        29: .line 697
            iload 4 /* result */
            ifne 32
        30: .line 698
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2Channel.pushEnabled:Z
        31: .line 699
            goto 38
      StackMap locals: int
      StackMap stack:
        32: iload 4 /* result */
            iconst_1
            if_icmpeq 38
        33: .line 701
            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 702
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        35: .line 703
            iconst_0
            ireturn
        end local 4 // int result
        36: .line 705
      StackMap locals:
      StackMap stack:
            aload 2 /* setting */
            invokevirtual io.undertow.protocols.http2.Http2Setting.getId:()I
            iconst_3
            if_icmpne 38
        37: .line 706
            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 670
      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 710
            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 714
            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 718
            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 722
            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 726
            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 730
            aload 0 /* this */
            iload 1 /* sendMaxConcurrentStreams */
            putfield io.undertow.protocols.http2.Http2Channel.sendMaxConcurrentStreams:I
         1: .line 731
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendSettings:()V
         2: .line 732
            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 735
            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 739
            iload 1 /* streamId */
            ifne 18
         1: .line 740
            iload 2 /* deltaWindowSize */
            ifne 5
         2: .line 741
            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 742
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
         4: .line 743
            return
         5: .line 746
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         6: .line 747
            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 749
            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 750
            iload 4 /* exhausted */
            ifeq 12
        11: .line 751
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.notifyFlowControlAllowed:()V
        12: .line 753
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.sendWindowSize:J
            ldc 2147483647
            lcmp
            ifle 14
        13: .line 754
            aload 0 /* this */
            iconst_3
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        end local 4 // boolean exhausted
        14: .line 746
      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 758
      StackMap locals:
      StackMap stack:
            iload 2 /* deltaWindowSize */
            ifne 22
        19: .line 759
            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 760
            aload 0 /* this */
            iload 1 /* streamId */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendRstStream:(II)V
        21: .line 761
            return
        22: .line 763
      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 764
            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 765
            aload 4 /* stream */
            ifnonnull 30
        27: .line 766
            aload 0 /* this */
            iload 1 /* streamId */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isIdle:(I)Z
            ifeq 31
        28: .line 767
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        29: .line 769
            goto 31
        30: .line 770
      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 773
      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 776
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.recalculateHeldFrames:()V
         1: .line 777
            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 780
            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 781
            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 784
            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 785
            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 788
            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 790
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.shutdownWrites:()V
         2: .line 791
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.flush:()Z
            ifne 17
         3: .line 792
            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 793
            aload 4 /* ping */
            invokevirtual io.undertow.protocols.http2.Http2PingStreamSinkChannel.resumeWrites:()V
         5: .line 795
            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 796
            aload 2 /* exceptionHandler */
            ifnull 10
         8: .line 797
            aload 2 /* exceptionHandler */
            aload 4 /* ping */
            aload 5 /* e */
            invokeinterface org.xnio.ChannelExceptionHandler.handleException:(Ljava/nio/channels/Channel;Ljava/io/IOException;)V
         9: .line 798
            goto 17
        10: .line 799
      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 801
      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 802
            aload 2 /* exceptionHandler */
            ifnull 16
        14: .line 803
            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 804
            goto 17
        16: .line 805
      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 808
      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 811
            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 812
            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 815
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
            ifeq 2
         1: .line 816
            return
         2: .line 818
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.thisGoneAway:Z
         3: .line 819
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            invokeinterface io.undertow.UndertowLogger.isTraceEnabled:()Z
            ifeq 5
         4: .line 820
            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 822
      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 824
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.shutdownWrites:()V
         7: .line 825
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.flush:()Z
            ifne 13
         8: .line 826
            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 831
            aload 2 /* exceptionHandler */
        10: .line 826
            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 832
            aload 3 /* goAway */
            invokevirtual io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel.resumeWrites:()V
        12: .line 833
            goto 20
        13: .line 834
      StackMap locals: io.undertow.protocols.http2.Http2GoAwayStreamSinkChannel
      StackMap stack:
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        14: .line 836
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        15: astore 4 /* e */
        start local 4 // java.io.IOException e
        16: .line 837
            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 838
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* t */
        start local 4 // java.lang.Throwable t
        19: .line 839
            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 841
      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 844
            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 845
            aload 0 /* this */
            aload 3 /* windowUpdateStreamSinkChannel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
         2: .line 847
            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 850
            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 851
            aload 1 /* con */
            instanceof org.xnio.ssl.SslConnection
            ifeq 3
         2: .line 852
            aload 1 /* con */
            checkcast org.xnio.ssl.SslConnection
            invokevirtual org.xnio.ssl.SslConnection.getSslSession:()Ljavax/net/ssl/SSLSession;
            areturn
         3: .line 854
      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 858
            iload 1 /* read */
            ifgt 2
         1: .line 859
            return
         2: .line 861
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 2 /* delta */
        start local 2 // int delta
         3: .line 862
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 863
            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 865
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.initialReceiveWindowSize:I
            istore 4 /* initialWindowSize */
        start local 4 // int initialWindowSize
         6: .line 866
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            iload 4 /* initialWindowSize */
            iconst_2
            idiv
            if_icmpge 9
         7: .line 867
            iload 4 /* initialWindowSize */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.receiveWindowSize:I
            isub
            istore 2 /* delta */
         8: .line 868
            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 862
      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 871
      StackMap locals:
      StackMap stack:
            iload 2 /* delta */
            ifle 15
        14: .line 872
            aload 0 /* this */
            iconst_0
            iload 2 /* delta */
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendUpdateWindowSize:(II)V
        15: .line 874
      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 884
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifne 2
         1: .line 885
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.headersStreamCanOnlyBeCreatedByClient:()Ljava/io/IOException;
            athrow
         2: .line 887
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 4
         3: .line 888
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         4: .line 890
      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 891
            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 892
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamLimitExceeded:()Ljava/io/IOException;
            athrow
         7: .line 894
      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 895
            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 896
            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 897
            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 899
            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 903
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 2
         1: .line 904
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 906
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isClient:()Z
            ifeq 4
         3: .line 907
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.pushPromiseCanOnlyBeCreatedByServer:()Ljava/io/IOException;
            athrow
         4: .line 909
      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 910
            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 911
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamLimitExceeded:()Ljava/io/IOException;
            athrow
         7: .line 913
      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 914
            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 915
            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 916
            aload 0 /* this */
            aload 5 /* pushPromise */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannel:(Lorg/xnio/channels/StreamSinkChannel;)V
        11: .line 918
            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 919
            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 920
            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 930
            iload 1 /* bytesToGrab */
            ifgt 2
         1: .line 931
            iconst_0
            ireturn
         2: .line 934
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.flowControlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 935
            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 936
            iload 1 /* bytesToGrab */
            iconst_2
            if_icmple 7
            iload 2 /* min */
            iconst_2
            if_icmpgt 7
         5: .line 938
            aload 3
            monitorexit
         6: iconst_0
            ireturn
         7: .line 940
      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 941
            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 934
            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 943
      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 947
            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 948
            aload 2 /* existing */
            ifnonnull 3
         2: .line 949
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamNotRegistered:()Ljava/lang/IllegalStateException;
            athrow
         3: .line 951
      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 952
            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 955
            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 956
            aload 2 /* existing */
            ifnonnull 3
         2: .line 957
            return
         3: .line 959
      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 960
            aload 2 /* existing */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
         5: .line 961
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
            ifeq 13
         6: .line 962
            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 963
            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 964
            goto 12
        11: .line 965
      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 967
      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 969
      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 970
            aload 0 /* this */
            iconst_0
            invokevirtual io.undertow.protocols.http2.Http2Channel.sendGoAway:(I)V
        15: .line 971
            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 972
            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 974
      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 977
            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 982
            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 986
            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 990
            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 994
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.paddingRandom:Ljava/util/Random;
            ifnonnull 2
         1: .line 995
            iconst_0
            ireturn
         2: .line 997
      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 1002
            aload 1 /* key */
            ifnonnull 2
         1: .line 1003
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1005
      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 1010
            aload 1 /* key */
            ifnonnull 2
         1: .line 1011
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1013
      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 1014
            aload 2 /* o */
            ifnonnull 5
         4: .line 1015
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         5: .line 1017
      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 1022
            aload 1 /* key */
            ifnonnull 2
         1: .line 1023
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1025
      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 1030
            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 1036
            aload 1 /* key */
            ifnonnull 2
         1: .line 1037
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            ldc "key"
            invokeinterface io.undertow.UndertowMessages.argumentCannotBeNull:(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
            athrow
         2: .line 1039
      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 1040
            aload 3 /* attachments */
            dup
            astore 4
            monitorenter
         4: .line 1041
            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 1042
            aload 5 /* list */
            ifnonnull 10
         6: .line 1043
            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 1044
            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 1045
            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 1046
            goto 11
        10: .line 1047
      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 1040
      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 1050
      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 1053
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2Channel.isOpen:()Z
            ifne 2
         1: .line 1055
            return
         2: .line 1057
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* streamId */
            invokevirtual io.undertow.protocols.http2.Http2Channel.handleRstStream:(I)V
         3: .line 1058
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            invokeinterface io.undertow.UndertowLogger.isDebugEnabled:()Z
            ifeq 5
         4: .line 1059
            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 1061
      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 1062
            aload 0 /* this */
            aload 3 /* channel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.flushChannelIgnoreFailure:(Lorg/xnio/channels/StreamSinkChannel;)V
         7: .line 1063
            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 1066
            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 1067
            aload 2 /* holder */
            ifnull 12
         2: .line 1068
            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 1069
            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 1070
            goto 8
         7: .line 1071
      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 1073
      StackMap locals:
      StackMap stack:
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkChannel:Lio/undertow/protocols/http2/Http2StreamSinkChannel;
            ifnull 10
         9: .line 1074
            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 1076
      StackMap locals:
      StackMap stack:
            aload 2 /* holder */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
            ifnull 12
        11: .line 1077
            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 1080
      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 1088
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
            ifeq 2
         1: .line 1089
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 1091
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel.lastGoodStreamId:I
         3: .line 1092
            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 1093
            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 1094
            aload 2 /* streamHolder */
            iconst_1
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceClosed:Z
         6: .line 1095
            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 1096
            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 1097
            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 1102
            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 1106
            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 1110
            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 1114
            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 1115
            aload 2 /* existing */
            ifnonnull 3
         2: .line 1116
            aconst_null
            areturn
         3: .line 1118
      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 1119
            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 1120
            aload 2 /* existing */
            aconst_null
            putfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sourceChannel:Lio/undertow/protocols/http2/Http2StreamSourceChannel;
         6: .line 1121
            aload 2 /* existing */
            getfield io.undertow.protocols.http2.Http2Channel$StreamHolder.sinkClosed:Z
            ifeq 14
         7: .line 1122
            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 1123
            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 1124
            goto 13
        12: .line 1125
      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 1127
      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 1129
      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 1133
            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 1134
            aload 2 /* existing */
            ifnonnull 3
         2: .line 1135
            aconst_null
            areturn
         3: .line 1137
      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 1149
            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 1153
            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 1157
            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 1161
            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 1162
            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 1164
      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 1169
            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