public class io.undertow.protocols.ajp.AjpClientChannel extends io.undertow.server.protocol.framed.AbstractFramedChannel<io.undertow.protocols.ajp.AjpClientChannel, io.undertow.protocols.ajp.AbstractAjpClientStreamSourceChannel, io.undertow.protocols.ajp.AbstractAjpClientStreamSinkChannel>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.protocols.ajp.AjpClientChannel
  super_class: io.undertow.server.protocol.framed.AbstractFramedChannel
{
  private final io.undertow.protocols.ajp.AjpResponseParser ajpParser;
    descriptor: Lio/undertow/protocols/ajp/AjpResponseParser;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.undertow.protocols.ajp.AjpClientResponseStreamSourceChannel source;
    descriptor: Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
    flags: (0x0002) ACC_PRIVATE

  private io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel sink;
    descriptor: Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.List<io.undertow.client.ClientConnection$PingListener> pingListeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lio/undertow/client/ClientConnection$PingListener;>;

  boolean sinkDone;
    descriptor: Z
    flags: (0x0000) 

  boolean sourceDone;
    descriptor: Z
    flags: (0x0000) 

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

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

  public void <init>(org.xnio.StreamConnection, io.undertow.connector.ByteBufferPool, org.xnio.OptionMap);
    descriptor: (Lorg/xnio/StreamConnection;Lio/undertow/connector/ByteBufferPool;Lorg/xnio/OptionMap;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // org.xnio.StreamConnection connectedStreamChannel
        start local 2 // io.undertow.connector.ByteBufferPool bufferPool
        start local 3 // org.xnio.OptionMap settings
         0: .line 84
            aload 0 /* this */
            aload 1 /* connectedStreamChannel */
            aload 2 /* bufferPool */
            getstatic io.undertow.protocols.ajp.AjpClientFramePriority.INSTANCE:Lio/undertow/protocols/ajp/AjpClientFramePriority;
            aconst_null
            aload 3 /* 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
         1: .line 67
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
         2: .line 69
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.sinkDone:Z
         3: .line 70
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.sourceDone:Z
         4: .line 85
            aload 0 /* this */
            new io.undertow.protocols.ajp.AjpResponseParser
            dup
            invokespecial io.undertow.protocols.ajp.AjpResponseParser.<init>:()V
            putfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
         5: .line 86
            return
        end local 3 // org.xnio.OptionMap settings
        end local 2 // io.undertow.connector.ByteBufferPool bufferPool
        end local 1 // org.xnio.StreamConnection connectedStreamChannel
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0    6     1  connectedStreamChannel  Lorg/xnio/StreamConnection;
            0    6     2              bufferPool  Lio/undertow/connector/ByteBufferPool;
            0    6     3                settings  Lorg/xnio/OptionMap;
    MethodParameters:
                        Name  Flags
      connectedStreamChannel  
      bufferPool              
      settings                

  protected io.undertow.protocols.ajp.AbstractAjpClientStreamSourceChannel 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/ajp/AbstractAjpClientStreamSourceChannel;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=7, args_size=3
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        start local 2 // io.undertow.connector.PooledByteBuffer frameData
         0: .line 90
            aload 1 /* frameHeaderData */
            instanceof io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse
            ifeq 5
         1: .line 91
            aload 1 /* frameHeaderData */
            checkcast io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse
            astore 3 /* h */
        start local 3 // io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse h
         2: .line 92
            new io.undertow.protocols.ajp.AjpClientResponseStreamSourceChannel
            dup
            aload 0 /* this */
            aload 3 /* h */
            getfield io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse.headers:Lio/undertow/util/HeaderMap;
            aload 3 /* h */
            getfield io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse.statusCode:I
            aload 3 /* h */
            getfield io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse.reasonPhrase:Ljava/lang/String;
            aload 2 /* frameData */
            aload 1 /* frameHeaderData */
            invokeinterface io.undertow.server.protocol.framed.FrameHeaderData.getFrameLength:()J
            l2i
            invokespecial io.undertow.protocols.ajp.AjpClientResponseStreamSourceChannel.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;Lio/undertow/util/HeaderMap;ILjava/lang/String;Lio/undertow/connector/PooledByteBuffer;I)V
            astore 4 /* sourceChannel */
        start local 4 // io.undertow.protocols.ajp.AjpClientResponseStreamSourceChannel sourceChannel
         3: .line 93
            aload 0 /* this */
            aload 4 /* sourceChannel */
            putfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
         4: .line 94
            aload 4 /* sourceChannel */
            areturn
        end local 4 // io.undertow.protocols.ajp.AjpClientResponseStreamSourceChannel sourceChannel
        end local 3 // io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse h
         5: .line 95
      StackMap locals:
      StackMap stack:
            aload 1 /* frameHeaderData */
            instanceof io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk
            ifeq 10
         6: .line 96
            aload 1 /* frameHeaderData */
            checkcast io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk
            astore 3 /* r */
        start local 3 // io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk r
         7: .line 97
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
            aload 3 /* r */
            invokevirtual io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk.getLength:()I
            invokevirtual io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel.chunkRequested:(I)V
         8: .line 98
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
         9: .line 99
            aconst_null
            areturn
        end local 3 // io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk r
        10: .line 100
      StackMap locals:
      StackMap stack:
            aload 1 /* frameHeaderData */
            instanceof io.undertow.protocols.ajp.AjpClientChannel$CpongResponse
            ifeq 25
        11: .line 101
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            dup
            astore 3
            monitorenter
        12: .line 102
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 18
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer java.util.List top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.client.ClientConnection$PingListener
            astore 4 /* i */
        start local 4 // io.undertow.client.ClientConnection$PingListener i
        14: .line 104
            aload 4 /* i */
            invokeinterface io.undertow.client.ClientConnection$PingListener.acknowledged:()V
        15: .line 105
            goto 18
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer java.util.List io.undertow.client.ClientConnection$PingListener java.util.Iterator
      StackMap stack: java.lang.Throwable
        16: astore 6 /* t */
        start local 6 // java.lang.Throwable t
        17: .line 106
            getstatic io.undertow.UndertowLogger.ROOT_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Exception notifying ping listener"
            aload 6 /* t */
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 6 // java.lang.Throwable t
        end local 4 // io.undertow.client.ClientConnection$PingListener i
        18: .line 102
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        19: .line 109
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
        20: .line 101
            aload 3
            monitorexit
        21: goto 24
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.server.protocol.framed.FrameHeaderData io.undertow.connector.PooledByteBuffer java.util.List
      StackMap stack: java.lang.Throwable
        22: aload 3
            monitorexit
        23: athrow
        24: .line 111
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        25: .line 113
      StackMap locals:
      StackMap stack:
            aload 2 /* frameData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        26: .line 114
            new java.lang.RuntimeException
            dup
            ldc "TODO: unknown frame"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // io.undertow.connector.PooledByteBuffer frameData
        end local 1 // io.undertow.server.protocol.framed.FrameHeaderData frameHeaderData
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   27     0             this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0   27     1  frameHeaderData  Lio/undertow/server/protocol/framed/FrameHeaderData;
            0   27     2        frameData  Lio/undertow/connector/PooledByteBuffer;
            2    5     3                h  Lio/undertow/protocols/ajp/AjpClientChannel$SendHeadersResponse;
            3    5     4    sourceChannel  Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
            7   10     3                r  Lio/undertow/protocols/ajp/AjpClientChannel$RequestBodyChunk;
           14   18     4                i  Lio/undertow/client/ClientConnection$PingListener;
           17   18     6                t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          14    15      16  Class java.lang.Throwable
          12    21      22  any
          22    23      22  any
    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=6, locals=6, args_size=2
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // java.nio.ByteBuffer data
         0: .line 121
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            aload 1 /* data */
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.parse:(Ljava/nio/ByteBuffer;)V
         1: .line 122
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.isComplete:()Z
            ifeq 35
         2: .line 124
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            astore 2 /* parser */
        start local 2 // io.undertow.protocols.ajp.AjpResponseParser parser
         3: .line 125
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.prefix:B
            iconst_4
            if_icmpne 7
         4: .line 126
            new io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse
            dup
            aload 0 /* this */
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.statusCode:I
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.reasonPhrase:Ljava/lang/String;
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.headers:Lio/undertow/util/HeaderMap;
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;ILjava/lang/String;Lio/undertow/util/HeaderMap;)V
            astore 5
         5: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
         6: .line 126
            aload 5
            areturn
         7: .line 127
      StackMap locals: io.undertow.protocols.ajp.AjpResponseParser
      StackMap stack:
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.prefix:B
            bipush 6
            if_icmpne 11
         8: .line 128
            new io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk
            dup
            aload 0 /* this */
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.readBodyChunkSize:I
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;I)V
            astore 5
         9: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        10: .line 128
            aload 5
            areturn
        11: .line 129
      StackMap locals:
      StackMap stack:
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.prefix:B
            iconst_3
            if_icmpne 15
        12: .line 130
            new io.undertow.protocols.ajp.AjpClientChannel$SendBodyChunk
            dup
            aload 0 /* this */
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.currentIntegerPart:I
            iconst_1
            iadd
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$SendBodyChunk.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;I)V
            astore 5
        13: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        14: .line 130
            aload 5
            areturn
        15: .line 131
      StackMap locals:
      StackMap stack:
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.prefix:B
            iconst_5
            if_icmpne 25
        16: .line 132
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.currentIntegerPart:I
            ifeq 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 3 /* persistent */
        start local 3 // boolean persistent
        19: .line 133
            iload 3 /* persistent */
            ifne 22
        20: .line 134
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameReceived:Z
        21: .line 135
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameSent:Z
        22: .line 137
      StackMap locals: int
      StackMap stack:
            new io.undertow.protocols.ajp.AjpClientChannel$EndResponse
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$EndResponse.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;)V
            astore 5
        23: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        24: .line 137
            aload 5
            areturn
        end local 3 // boolean persistent
        25: .line 138
      StackMap locals:
      StackMap stack:
            aload 2 /* parser */
            getfield io.undertow.protocols.ajp.AjpResponseParser.prefix:B
            bipush 9
            if_icmpne 29
        26: .line 139
            new io.undertow.protocols.ajp.AjpClientChannel$CpongResponse
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$CpongResponse.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;)V
            astore 5
        27: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        28: .line 139
            aload 5
            areturn
        29: .line 141
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.UndertowLogger.ROOT_LOGGER:Lio/undertow/UndertowLogger;
            ldc "UNKOWN FRAME"
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
        end local 2 // io.undertow.protocols.ajp.AjpResponseParser parser
        30: .line 143
            goto 34
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
        31: astore 4
        32: .line 144
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        33: .line 145
            aload 4
            athrow
        34: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.ajpParser:Lio/undertow/protocols/ajp/AjpResponseParser;
            invokevirtual io.undertow.protocols.ajp.AjpResponseParser.reset:()V
        35: .line 147
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.nio.ByteBuffer data
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   36     0        this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0   36     1        data  Ljava/nio/ByteBuffer;
            3   30     2      parser  Lio/undertow/protocols/ajp/AjpResponseParser;
           19   25     3  persistent  Z
      Exception table:
        from    to  target  type
           2     5      31  any
           7     9      31  any
          11    13      31  any
          15    23      31  any
          25    27      31  any
          29    31      31  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  public io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel sendRequest(io.undertow.util.HttpString, java.lang.String, io.undertow.util.HttpString, io.undertow.util.HeaderMap, io.undertow.util.Attachable, org.xnio.ChannelListener<io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel>);
    descriptor: (Lio/undertow/util/HttpString;Ljava/lang/String;Lio/undertow/util/HttpString;Lio/undertow/util/HeaderMap;Lio/undertow/util/Attachable;Lorg/xnio/ChannelListener;)Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=8, args_size=7
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // io.undertow.util.HttpString method
        start local 2 // java.lang.String path
        start local 3 // io.undertow.util.HttpString protocol
        start local 4 // io.undertow.util.HeaderMap headers
        start local 5 // io.undertow.util.Attachable attachable
        start local 6 // org.xnio.ChannelListener finishListener
         0: .line 151
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sinkDone:Z
            ifeq 1
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sourceDone:Z
            ifne 2
         1: .line 152
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.ajpRequestAlreadyInProgress:()Ljava/lang/IllegalStateException;
            athrow
         2: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.ajp.AjpClientChannel.sinkDone:Z
         3: .line 155
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.ajp.AjpClientChannel.sourceDone:Z
         4: .line 156
            new io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel
            dup
            aload 0 /* this */
            aload 6 /* finishListener */
            aload 4 /* headers */
            aload 2 /* path */
            aload 1 /* method */
            aload 3 /* protocol */
            aload 5 /* attachable */
            invokespecial io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;Lorg/xnio/ChannelListener;Lio/undertow/util/HeaderMap;Ljava/lang/String;Lio/undertow/util/HttpString;Lio/undertow/util/HttpString;Lio/undertow/util/Attachable;)V
            astore 7 /* ajpClientRequestStreamSinkChannel */
        start local 7 // io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel ajpClientRequestStreamSinkChannel
         5: .line 157
            aload 0 /* this */
            aload 7 /* ajpClientRequestStreamSinkChannel */
            putfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
         6: .line 158
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
         7: .line 159
            aload 7 /* ajpClientRequestStreamSinkChannel */
            areturn
        end local 7 // io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel ajpClientRequestStreamSinkChannel
        end local 6 // org.xnio.ChannelListener finishListener
        end local 5 // io.undertow.util.Attachable attachable
        end local 4 // io.undertow.util.HeaderMap headers
        end local 3 // io.undertow.util.HttpString protocol
        end local 2 // java.lang.String path
        end local 1 // io.undertow.util.HttpString method
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot                               Name  Signature
            0    8     0                               this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0    8     1                             method  Lio/undertow/util/HttpString;
            0    8     2                               path  Ljava/lang/String;
            0    8     3                           protocol  Lio/undertow/util/HttpString;
            0    8     4                            headers  Lio/undertow/util/HeaderMap;
            0    8     5                         attachable  Lio/undertow/util/Attachable;
            0    8     6                     finishListener  Lorg/xnio/ChannelListener<Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;>;
            5    8     7  ajpClientRequestStreamSinkChannel  Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
    Signature: (Lio/undertow/util/HttpString;Ljava/lang/String;Lio/undertow/util/HttpString;Lio/undertow/util/HeaderMap;Lio/undertow/util/Attachable;Lorg/xnio/ChannelListener<Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;>;)Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
    MethodParameters:
                Name  Flags
      method          final
      path            final
      protocol        final
      headers         final
      attachable      final
      finishListener  

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

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

  protected void lastDataRead();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 173
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameSent:Z
            ifne 3
         1: .line 174
            aload 0 /* this */
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            invokevirtual io.undertow.protocols.ajp.AjpClientChannel.markReadsBroken:(Ljava/lang/Throwable;)V
         2: .line 175
            aload 0 /* this */
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            invokevirtual io.undertow.protocols.ajp.AjpClientChannel.markWritesBroken:(Ljava/lang/Throwable;)V
         3: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameReceived:Z
         4: .line 178
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameSent:Z
         5: .line 179
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         6: .line 180
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  protected void handleBrokenSourceChannel(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // java.lang.Throwable e
         0: .line 184
            return
        end local 1 // java.lang.Throwable e
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0    1     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=0, locals=2, args_size=2
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // java.lang.Throwable e
         0: .line 188
            return
        end local 1 // java.lang.Throwable e
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0    1     1     e  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      e     

  protected void closeSubChannels();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 193
            iconst_2
            anewarray java.io.Closeable
            dup
            iconst_0
         1: .line 192
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
            aastore
            invokestatic org.xnio.IoUtils.safeClose:([Ljava/io/Closeable;)V
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  protected java.util.Collection<io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel<io.undertow.protocols.ajp.AjpClientChannel, io.undertow.protocols.ajp.AbstractAjpClientStreamSourceChannel, io.undertow.protocols.ajp.AbstractAjpClientStreamSinkChannel>> getReceivers();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 197
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
            ifnonnull 2
         1: .line 198
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         2: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            areturn
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;
    Signature: ()Ljava/util/Collection<Lio/undertow/server/protocol/framed/AbstractFramedStreamSourceChannel<Lio/undertow/protocols/ajp/AjpClientChannel;Lio/undertow/protocols/ajp/AbstractAjpClientStreamSourceChannel;Lio/undertow/protocols/ajp/AbstractAjpClientStreamSinkChannel;>;>;

  protected org.xnio.OptionMap getSettings();
    descriptor: ()Lorg/xnio/OptionMap;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 204
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.getSettings:()Lorg/xnio/OptionMap;
            areturn
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  void sinkDone();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 208
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.sinkDone:Z
         1: .line 209
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sourceDone:Z
            ifeq 4
         2: .line 210
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
         3: .line 211
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
         4: .line 213
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  void sourceDone();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 216
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.ajp.AjpClientChannel.sourceDone:Z
         1: .line 217
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sinkDone:Z
            ifeq 5
         2: .line 218
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
         3: .line 219
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.ajp.AjpClientChannel.source:Lio/undertow/protocols/ajp/AjpClientResponseStreamSourceChannel;
         4: .line 220
            goto 6
         5: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.sink:Lio/undertow/protocols/ajp/AjpClientRequestClientStreamSinkChannel;
            invokevirtual io.undertow.protocols.ajp.AjpClientRequestClientStreamSinkChannel.startDiscard:()V
         6: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  public boolean isOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 227
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.isOpen:()Z
            ifeq 1
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameSent:Z
            ifne 1
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.lastFrameReceived:Z
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;

  protected synchronized void recalculateHeldFrames();
    descriptor: ()V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 232
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedChannel.recalculateHeldFrames:()V
         1: .line 233
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;
    Exceptions:
      throws java.io.IOException

  public void sendPing(io.undertow.client.ClientConnection$PingListener, long, java.util.concurrent.TimeUnit);
    descriptor: (Lio/undertow/client/ClientConnection$PingListener;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
        start local 1 // io.undertow.client.ClientConnection$PingListener pingListener
        start local 2 // long timeout
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 236
            new io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel
            dup
            aload 0 /* this */
            invokespecial io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;)V
            astore 5 /* pingChannel */
        start local 5 // io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel pingChannel
         1: .line 238
            aload 5 /* pingChannel */
            invokevirtual io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel.shutdownWrites:()V
         2: .line 239
            aload 5 /* pingChannel */
            invokevirtual io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel.flush:()Z
            ifne 9
         3: .line 240
            aload 5 /* pingChannel */
            invokevirtual io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            aconst_null
            new io.undertow.protocols.ajp.AjpClientChannel$1
            dup
            aload 0 /* this */
            aload 1 /* pingListener */
            invokespecial io.undertow.protocols.ajp.AjpClientChannel$1.<init>:(Lio/undertow/protocols/ajp/AjpClientChannel;Lio/undertow/client/ClientConnection$PingListener;)V
            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 249
            aload 5 /* pingChannel */
            invokevirtual io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel.resumeWrites:()V
         5: .line 251
            goto 9
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.client.ClientConnection$PingListener long java.util.concurrent.TimeUnit io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel
      StackMap stack: java.io.IOException
         6: astore 6 /* e */
        start local 6 // java.io.IOException e
         7: .line 252
            aload 1 /* pingListener */
            aload 6 /* e */
            invokeinterface io.undertow.client.ClientConnection$PingListener.failed:(Ljava/io/IOException;)V
         8: .line 253
            return
        end local 6 // java.io.IOException e
         9: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            dup
            astore 6
            monitorenter
        10: .line 257
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            aload 1 /* pingListener */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 256
            aload 6
            monitorexit
        12: goto 15
      StackMap locals: io.undertow.protocols.ajp.AjpClientChannel io.undertow.client.ClientConnection$PingListener long java.util.concurrent.TimeUnit io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel java.util.List
      StackMap stack: java.lang.Throwable
        13: aload 6
            monitorexit
        14: athrow
        15: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.ajp.AjpClientChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 1 /* pingListener */
            invokedynamic run(Lio/undertow/protocols/ajp/AjpClientChannel;Lio/undertow/client/ClientConnection$PingListener;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  io/undertow/protocols/ajp/AjpClientChannel.lambda$0(Lio/undertow/client/ClientConnection$PingListener;)V (7)
                  ()V
        16: .line 266
            lload 2 /* timeout */
            aload 4 /* timeUnit */
        17: .line 259
            invokevirtual org.xnio.XnioIoThread.executeAfter:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
            pop
        18: .line 267
            return
        end local 5 // io.undertow.protocols.ajp.AjpClientCPingStreamSinkChannel pingChannel
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long timeout
        end local 1 // io.undertow.client.ClientConnection$PingListener pingListener
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   19     0          this  Lio/undertow/protocols/ajp/AjpClientChannel;
            0   19     1  pingListener  Lio/undertow/client/ClientConnection$PingListener;
            0   19     2       timeout  J
            0   19     4      timeUnit  Ljava/util/concurrent/TimeUnit;
            1   19     5   pingChannel  Lio/undertow/protocols/ajp/AjpClientCPingStreamSinkChannel;
            7    9     6             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     5       6  Class java.io.IOException
          10    12      13  any
          13    14      13  any
    MethodParameters:
              Name  Flags
      pingListener  
      timeout       
      timeUnit      

  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.ajp.AjpClientChannel.createChannel:(Lio/undertow/server/protocol/framed/FrameHeaderData;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/ajp/AbstractAjpClientStreamSourceChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  private void lambda$0(io.undertow.client.ClientConnection$PingListener);
    descriptor: (Lio/undertow/client/ClientConnection$PingListener;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.protocols.ajp.AjpClientChannel this
         0: .line 260
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            dup
            astore 2
            monitorenter
         1: .line 261
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            aload 1
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 262
            aload 0 /* this */
            getfield io.undertow.protocols.ajp.AjpClientChannel.pingListeners:Ljava/util/List;
            aload 1
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         3: .line 263
            aload 1
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.pingTimeout:()Ljava/io/IOException;
            invokeinterface io.undertow.client.ClientConnection$PingListener.failed:(Ljava/io/IOException;)V
         4: .line 260
      StackMap locals: java.util.List
      StackMap stack:
            aload 2
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 266
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.ajp.AjpClientChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/undertow/protocols/ajp/AjpClientChannel;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
}
Signature: Lio/undertow/server/protocol/framed/AbstractFramedChannel<Lio/undertow/protocols/ajp/AjpClientChannel;Lio/undertow/protocols/ajp/AbstractAjpClientStreamSourceChannel;Lio/undertow/protocols/ajp/AbstractAjpClientStreamSinkChannel;>;
SourceFile: "AjpClientChannel.java"
NestMembers:
  io.undertow.protocols.ajp.AjpClientChannel$1  io.undertow.protocols.ajp.AjpClientChannel$CpongResponse  io.undertow.protocols.ajp.AjpClientChannel$EndResponse  io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk  io.undertow.protocols.ajp.AjpClientChannel$SendBodyChunk  io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse
InnerClasses:
  public abstract PingListener = io.undertow.client.ClientConnection$PingListener of io.undertow.client.ClientConnection
  io.undertow.protocols.ajp.AjpClientChannel$1
  CpongResponse = io.undertow.protocols.ajp.AjpClientChannel$CpongResponse of io.undertow.protocols.ajp.AjpClientChannel
  EndResponse = io.undertow.protocols.ajp.AjpClientChannel$EndResponse of io.undertow.protocols.ajp.AjpClientChannel
  RequestBodyChunk = io.undertow.protocols.ajp.AjpClientChannel$RequestBodyChunk of io.undertow.protocols.ajp.AjpClientChannel
  SendBodyChunk = io.undertow.protocols.ajp.AjpClientChannel$SendBodyChunk of io.undertow.protocols.ajp.AjpClientChannel
  SendHeadersResponse = io.undertow.protocols.ajp.AjpClientChannel$SendHeadersResponse of io.undertow.protocols.ajp.AjpClientChannel
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public abstract Key = org.xnio.XnioExecutor$Key of org.xnio.XnioExecutor