public abstract class org.apache.tomcat.util.net.SocketWrapperBase<E>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.tomcat.util.net.SocketWrapperBase
  super_class: java.lang.Object
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private E socket;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Signature: TE;

  private final org.apache.tomcat.util.net.AbstractEndpoint<E, ?> endpoint;
    descriptor: Lorg/apache/tomcat/util/net/AbstractEndpoint;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/tomcat/util/net/AbstractEndpoint<TE;*>;

  protected final java.util.concurrent.atomic.AtomicBoolean closed;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

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

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

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

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

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

  private java.lang.String negotiatedProtocol;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  protected java.lang.String localAddr;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String localName;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected int localPort;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String remoteAddr;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String remoteHost;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected int remotePort;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

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

  private final java.util.concurrent.locks.Lock blockingStatusReadLock;
    descriptor: Ljava/util/concurrent/locks/Lock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock blockingStatusWriteLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile java.io.IOException error;
    descriptor: Ljava/io/IOException;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  protected volatile org.apache.tomcat.util.net.SocketBufferHandler socketBufferHandler;
    descriptor: Lorg/apache/tomcat/util/net/SocketBufferHandler;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected int bufferedWriteSize;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected final org.apache.tomcat.util.net.WriteBuffer nonBlockingWriteBuffer;
    descriptor: Lorg/apache/tomcat/util/net/WriteBuffer;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.concurrent.Semaphore readPending;
    descriptor: Ljava/util/concurrent/Semaphore;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile org.apache.tomcat.util.net.SocketWrapperBase<E>.OperationState<?> readOperation;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE
    Signature: Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.OperationState<*>;

  protected final java.util.concurrent.Semaphore writePending;
    descriptor: Ljava/util/concurrent/Semaphore;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile org.apache.tomcat.util.net.SocketWrapperBase<E>.OperationState<?> writeOperation;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE
    Signature: Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.OperationState<*>;

  public static final org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck COMPLETE_WRITE;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck COMPLETE_WRITE_WITH_COMPLETION;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck READ_DATA;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck COMPLETE_READ_WITH_COMPLETION;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck COMPLETE_READ;
    descriptor: Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            ldc Lorg/apache/tomcat/util/net/SocketWrapperBase;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
         1: .line 45
            ldc Lorg/apache/tomcat/util/net/SocketWrapperBase;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.sm:Lorg/apache/tomcat/util/res/StringManager;
         2: .line 940
            new org.apache.tomcat.util.net.SocketWrapperBase$1
            dup
            invokespecial org.apache.tomcat.util.net.SocketWrapperBase$1.<init>:()V
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_WRITE:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
         3: .line 958
            new org.apache.tomcat.util.net.SocketWrapperBase$2
            dup
            invokespecial org.apache.tomcat.util.net.SocketWrapperBase$2.<init>:()V
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
         4: .line 976
            new org.apache.tomcat.util.net.SocketWrapperBase$3
            dup
            invokespecial org.apache.tomcat.util.net.SocketWrapperBase$3.<init>:()V
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.READ_DATA:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
         5: .line 990
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_READ_WITH_COMPLETION:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
         6: .line 997
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_WRITE:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            putstatic org.apache.tomcat.util.net.SocketWrapperBase.COMPLETE_READ:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(E, org.apache.tomcat.util.net.AbstractEndpoint<E, ?>);
    descriptor: (Ljava/lang/Object;Lorg/apache/tomcat/util/net/AbstractEndpoint;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.lang.Object socket
        start local 2 // org.apache.tomcat.util.net.AbstractEndpoint endpoint
         0: .line 111
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 50
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield org.apache.tomcat.util.net.SocketWrapperBase.closed:Ljava/util/concurrent/atomic/AtomicBoolean;
         2: .line 54
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readTimeout:J
         3: .line 55
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeTimeout:J
         4: .line 57
            aload 0 /* this */
            bipush 100
            putfield org.apache.tomcat.util.net.SocketWrapperBase.keepAliveLeft:I
         5: .line 58
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SocketWrapperBase.upgraded:Z
         6: .line 59
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.SocketWrapperBase.secure:Z
         7: .line 60
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.negotiatedProtocol:Ljava/lang/String;
         8: .line 64
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localAddr:Ljava/lang/String;
         9: .line 65
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localName:Ljava/lang/String;
        10: .line 66
            aload 0 /* this */
            iconst_m1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localPort:I
        11: .line 67
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remoteAddr:Ljava/lang/String;
        12: .line 68
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remoteHost:Ljava/lang/String;
        13: .line 69
            aload 0 /* this */
            iconst_m1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remotePort:I
        14: .line 74
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatus:Z
        15: .line 82
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
        16: .line 87
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        17: .line 92
            aload 0 /* this */
            ldc 65536
            putfield org.apache.tomcat.util.net.SocketWrapperBase.bufferedWriteSize:I
        18: .line 104
            aload 0 /* this */
            new org.apache.tomcat.util.net.WriteBuffer
            dup
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.bufferedWriteSize:I
            invokespecial org.apache.tomcat.util.net.WriteBuffer.<init>:(I)V
            putfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
        19: .line 107
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        20: .line 109
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        21: .line 112
            aload 0 /* this */
            aload 1 /* socket */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
        22: .line 113
            aload 0 /* this */
            aload 2 /* endpoint */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
        23: .line 114
            new java.util.concurrent.locks.ReentrantReadWriteLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
            astore 3 /* lock */
        start local 3 // java.util.concurrent.locks.ReentrantReadWriteLock lock
        24: .line 115
            aload 0 /* this */
            aload 3 /* lock */
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
            putfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatusReadLock:Ljava/util/concurrent/locks/Lock;
        25: .line 116
            aload 0 /* this */
            aload 3 /* lock */
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            putfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatusWriteLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
        26: .line 117
            aload 2 /* endpoint */
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.getUseAsyncIO:()Z
            ifne 27
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.needSemaphores:()Z
            ifeq 30
        27: .line 118
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase java.lang.Object org.apache.tomcat.util.net.AbstractEndpoint java.util.concurrent.locks.ReentrantReadWriteLock
      StackMap stack:
            aload 0 /* this */
            new java.util.concurrent.Semaphore
            dup
            iconst_1
            invokespecial java.util.concurrent.Semaphore.<init>:(I)V
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
        28: .line 119
            aload 0 /* this */
            new java.util.concurrent.Semaphore
            dup
            iconst_1
            invokespecial java.util.concurrent.Semaphore.<init>:(I)V
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
        29: .line 120
            goto 32
        30: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
        31: .line 122
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
        32: .line 124
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.concurrent.locks.ReentrantReadWriteLock lock
        end local 2 // org.apache.tomcat.util.net.AbstractEndpoint endpoint
        end local 1 // java.lang.Object socket
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   33     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   33     1    socket  TE;
            0   33     2  endpoint  Lorg/apache/tomcat/util/net/AbstractEndpoint<TE;*>;
           24   33     3      lock  Ljava/util/concurrent/locks/ReentrantReadWriteLock;
    Signature: (TE;Lorg/apache/tomcat/util/net/AbstractEndpoint<TE;*>;)V
    MethodParameters:
          Name  Flags
      socket    
      endpoint  

  public E getSocket();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 127
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
    Signature: ()TE;

  protected void reset();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.lang.Object closedSocket
         0: .line 131
            aload 0 /* this */
            aload 1 /* closedSocket */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
         1: .line 132
            return
        end local 1 // java.lang.Object closedSocket
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    2     1  closedSocket  TE;
    Signature: (TE;)V
    MethodParameters:
              Name  Flags
      closedSocket  

  protected org.apache.tomcat.util.net.AbstractEndpoint<E, ?> getEndpoint();
    descriptor: ()Lorg/apache/tomcat/util/net/AbstractEndpoint;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 135
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
    Signature: ()Lorg/apache/tomcat/util/net/AbstractEndpoint<TE;*>;

  public void execute(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.lang.Runnable runnable
         0: .line 146
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.getExecutor:()Ljava/util/concurrent/Executor;
            astore 2 /* executor */
        start local 2 // java.util.concurrent.Executor executor
         1: .line 147
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.isRunning:()Z
            ifeq 2
            aload 2 /* executor */
            ifnonnull 3
         2: .line 148
      StackMap locals: java.util.concurrent.Executor
      StackMap stack:
            new java.util.concurrent.RejectedExecutionException
            dup
            invokespecial java.util.concurrent.RejectedExecutionException.<init>:()V
            athrow
         3: .line 150
      StackMap locals:
      StackMap stack:
            aload 2 /* executor */
            aload 1 /* runnable */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         4: .line 151
            return
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // java.lang.Runnable runnable
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    5     1  runnable  Ljava/lang/Runnable;
            1    5     2  executor  Ljava/util/concurrent/Executor;
    MethodParameters:
          Name  Flags
      runnable  

  public java.io.IOException getError();
    descriptor: ()Ljava/io/IOException;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 153
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setError(java.io.IOException);
    descriptor: (Ljava/io/IOException;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.io.IOException error
         0: .line 157
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            ifnull 2
         1: .line 158
            return
         2: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* error */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
         3: .line 161
            return
        end local 1 // java.io.IOException error
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    4     1  error  Ljava/io/IOException;
    MethodParameters:
       Name  Flags
      error  

  public void checkError();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 163
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            ifnull 2
         1: .line 164
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            athrow
         2: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
    Exceptions:
      throws java.io.IOException

  public boolean isUpgraded();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 168
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.upgraded:Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setUpgraded(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean upgraded
         0: .line 169
            aload 0 /* this */
            iload 1 /* upgraded */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.upgraded:Z
            return
        end local 1 // boolean upgraded
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1  upgraded  Z
    MethodParameters:
          Name  Flags
      upgraded  

  public boolean isSecure();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 170
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.secure:Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setSecure(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean secure
         0: .line 171
            aload 0 /* this */
            iload 1 /* secure */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.secure:Z
            return
        end local 1 // boolean secure
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1  secure  Z
    MethodParameters:
        Name  Flags
      secure  

  public java.lang.String getNegotiatedProtocol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 172
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.negotiatedProtocol:Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setNegotiatedProtocol(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.lang.String negotiatedProtocol
         0: .line 174
            aload 0 /* this */
            aload 1 /* negotiatedProtocol */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.negotiatedProtocol:Ljava/lang/String;
         1: .line 175
            return
        end local 1 // java.lang.String negotiatedProtocol
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    2     1  negotiatedProtocol  Ljava/lang/String;
    MethodParameters:
                    Name  Flags
      negotiatedProtocol  

  public void setReadTimeout(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long readTimeout
         0: .line 185
            lload 1 /* readTimeout */
            lconst_0
            lcmp
            ifle 3
         1: .line 186
            aload 0 /* this */
            lload 1 /* readTimeout */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readTimeout:J
         2: .line 187
            goto 4
         3: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readTimeout:J
         4: .line 190
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long readTimeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    5     1  readTimeout  J
    MethodParameters:
             Name  Flags
      readTimeout  

  public long getReadTimeout();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 193
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.readTimeout:J
            lreturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setWriteTimeout(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long writeTimeout
         0: .line 204
            lload 1 /* writeTimeout */
            lconst_0
            lcmp
            ifle 3
         1: .line 205
            aload 0 /* this */
            lload 1 /* writeTimeout */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeTimeout:J
         2: .line 206
            goto 4
         3: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeTimeout:J
         4: .line 209
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long writeTimeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    5     1  writeTimeout  J
    MethodParameters:
              Name  Flags
      writeTimeout  

  public long getWriteTimeout();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 212
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.writeTimeout:J
            lreturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setKeepAliveLeft(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // int keepAliveLeft
         0: .line 216
            aload 0 /* this */
            iload 1 /* keepAliveLeft */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.keepAliveLeft:I
         1: .line 217
            return
        end local 1 // int keepAliveLeft
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    2     1  keepAliveLeft  I
    MethodParameters:
               Name  Flags
      keepAliveLeft  

  public int decrementKeepAlive();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 220
            aload 0 /* this */
            dup
            getfield org.apache.tomcat.util.net.SocketWrapperBase.keepAliveLeft:I
            iconst_1
            isub
            dup_x1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.keepAliveLeft:I
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public java.lang.String getRemoteHost();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 224
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteHost:Ljava/lang/String;
            ifnonnull 2
         1: .line 225
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemoteHost:()V
         2: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteHost:Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateRemoteHost();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public java.lang.String getRemoteAddr();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 232
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteAddr:Ljava/lang/String;
            ifnonnull 2
         1: .line 233
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemoteAddr:()V
         2: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteAddr:Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateRemoteAddr();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public int getRemotePort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 240
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remotePort:I
            iconst_m1
            if_icmpne 2
         1: .line 241
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemotePort:()V
         2: .line 243
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remotePort:I
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateRemotePort();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public java.lang.String getLocalName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 248
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localName:Ljava/lang/String;
            ifnonnull 2
         1: .line 249
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalName:()V
         2: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localName:Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateLocalName();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public java.lang.String getLocalAddr();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 256
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localAddr:Ljava/lang/String;
            ifnonnull 2
         1: .line 257
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalAddr:()V
         2: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localAddr:Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateLocalAddr();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public int getLocalPort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 264
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localPort:I
            iconst_m1
            if_icmpne 2
         1: .line 265
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalPort:()V
         2: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localPort:I
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void populateLocalPort();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public boolean getBlockingStatus();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 271
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatus:Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public void setBlockingStatus(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean blockingStatus
         0: .line 273
            aload 0 /* this */
            iload 1 /* blockingStatus */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatus:Z
         1: .line 274
            return
        end local 1 // boolean blockingStatus
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    2     1  blockingStatus  Z
    MethodParameters:
                Name  Flags
      blockingStatus  

  public java.util.concurrent.locks.Lock getBlockingStatusReadLock();
    descriptor: ()Ljava/util/concurrent/locks/Lock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 275
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatusReadLock:Ljava/util/concurrent/locks/Lock;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock getBlockingStatusWriteLock();
    descriptor: ()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 277
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.blockingStatusWriteLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public org.apache.tomcat.util.net.SocketBufferHandler getSocketBufferHandler();
    descriptor: ()Lorg/apache/tomcat/util/net/SocketBufferHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 279
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean hasDataToRead();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 283
            iconst_1
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean hasDataToWrite();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 287
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 1
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean isReadyForWrite();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 305
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.canWrite:()Z
            istore 1 /* result */
        start local 1 // boolean result
         1: .line 306
            iload 1 /* result */
            ifne 3
         2: .line 307
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.registerWriteInterest:()V
         3: .line 309
      StackMap locals: int
      StackMap stack:
            iload 1 /* result */
            ireturn
        end local 1 // boolean result
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            1    4     1  result  Z

  public boolean canWrite();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 314
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            ifnonnull 2
         1: .line 315
            new java.lang.IllegalStateException
            dup
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "socket.closed"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 3
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifeq 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 329
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokespecial java.lang.Object.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public abstract int read(boolean, byte[], int, int);
    descriptor: (Z[BII)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      b      
      off    
      len    

  public abstract int read(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      to     

  public abstract boolean isReadyForRead();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  public abstract void setAppReadBufHandler(org.apache.tomcat.util.net.ApplicationBufferHandler);
    descriptor: (Lorg/apache/tomcat/util/net/ApplicationBufferHandler;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      handler  

  protected int populateReadBuffer(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 339
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForRead:()V
         1: .line 340
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            astore 4 /* readBuffer */
        start local 4 // java.nio.ByteBuffer readBuffer
         2: .line 341
            aload 4 /* readBuffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 5 /* remaining */
        start local 5 // int remaining
         3: .line 345
            iload 5 /* remaining */
            ifle 8
         4: .line 346
            iload 5 /* remaining */
            iload 3 /* len */
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* remaining */
         5: .line 347
            aload 4 /* readBuffer */
            aload 1 /* b */
            iload 2 /* off */
            iload 5 /* remaining */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         6: .line 349
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 8
         7: .line 350
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Socket: ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "], Read from buffer: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 5 /* remaining */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         8: .line 353
      StackMap locals: java.nio.ByteBuffer int
      StackMap stack:
            iload 5 /* remaining */
            ireturn
        end local 5 // int remaining
        end local 4 // java.nio.ByteBuffer readBuffer
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    9     1           b  [B
            0    9     2         off  I
            0    9     3         len  I
            2    9     4  readBuffer  Ljava/nio/ByteBuffer;
            3    9     5   remaining  I
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected int populateReadBuffer(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer to
         0: .line 360
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForRead:()V
         1: .line 361
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            aload 1 /* to */
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 2 /* nRead */
        start local 2 // int nRead
         2: .line 363
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 4
         3: .line 364
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Socket: ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "], Read from buffer: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* nRead */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 366
      StackMap locals: int
      StackMap stack:
            iload 2 /* nRead */
            ireturn
        end local 2 // int nRead
        end local 1 // java.nio.ByteBuffer to
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    5     1     to  Ljava/nio/ByteBuffer;
            2    5     2  nRead  I
    MethodParameters:
      Name  Flags
      to    

  public void unRead(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer returnedInput
         0: .line 382
            aload 1 /* returnedInput */
            ifnull 3
         1: .line 383
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
         2: .line 384
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            aload 1 /* returnedInput */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         3: .line 386
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer returnedInput
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    4     1  returnedInput  Ljava/nio/ByteBuffer;
    MethodParameters:
               Name  Flags
      returnedInput  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 393
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.closed:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 2
         1: .line 394
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doClose:()V
         2: .line 396
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  protected abstract void doClose();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 408
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.closed:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public final void write(boolean, byte[], int, int);
    descriptor: (Z[BII)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean block
        start local 2 // byte[] buf
        start local 3 // int off
        start local 4 // int len
         0: .line 439
            iload 4 /* len */
            ifeq 1
            aload 2 /* buf */
            ifnonnull 2
         1: .line 440
      StackMap locals:
      StackMap stack:
            return
         2: .line 453
      StackMap locals:
      StackMap stack:
            iload 1 /* block */
            ifeq 5
         3: .line 454
            aload 0 /* this */
            aload 2 /* buf */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking:([BII)V
         4: .line 455
            goto 6
         5: .line 456
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* buf */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlocking:([BII)V
         6: .line 458
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int len
        end local 3 // int off
        end local 2 // byte[] buf
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    7     1  block  Z
            0    7     2    buf  [B
            0    7     3    off  I
            0    7     4    len  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      buf    
      off    
      len    

  public final void write(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean block
        start local 2 // java.nio.ByteBuffer from
         0: .line 486
            aload 2 /* from */
            ifnull 1
            aload 2 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 2
         1: .line 487
      StackMap locals:
      StackMap stack:
            return
         2: .line 500
      StackMap locals:
      StackMap stack:
            iload 1 /* block */
            ifeq 5
         3: .line 501
            aload 0 /* this */
            aload 2 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking:(Ljava/nio/ByteBuffer;)V
         4: .line 502
            goto 6
         5: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlocking:(Ljava/nio/ByteBuffer;)V
         6: .line 505
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.nio.ByteBuffer from
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    7     1  block  Z
            0    7     2   from  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      from   

  protected void writeBlocking(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // byte[] buf
        start local 2 // int off
        start local 3 // int len
         0: .line 524
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         1: .line 525
            aload 1 /* buf */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:([BIILjava/nio/ByteBuffer;)I
            istore 4 /* thisTime */
        start local 4 // int thisTime
         2: .line 526
            goto 8
         3: .line 527
      StackMap locals: int
      StackMap stack:
            iload 3 /* len */
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
         4: .line 528
            iload 2 /* off */
            iload 4 /* thisTime */
            iadd
            istore 2 /* off */
         5: .line 529
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         6: .line 530
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         7: .line 531
            aload 1 /* buf */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:([BIILjava/nio/ByteBuffer;)I
            istore 4 /* thisTime */
         8: .line 526
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifeq 3
         9: .line 533
            return
        end local 4 // int thisTime
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] buf
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   10     1       buf  [B
            0   10     2       off  I
            0   10     3       len  I
            2   10     4  thisTime  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   
      off   
      len   

  protected void writeBlocking(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer from
         0: .line 550
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 3
         1: .line 554
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlockingDirect:(Ljava/nio/ByteBuffer;)V
         2: .line 555
            goto 8
         3: .line 557
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         4: .line 559
            aload 1 /* from */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            pop
         5: .line 562
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifne 8
         6: .line 563
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         7: .line 564
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlockingDirect:(Ljava/nio/ByteBuffer;)V
         8: .line 567
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer from
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    9     1  from  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  

  protected void writeBlockingDirect(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer from
         0: .line 581
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            istore 2 /* limit */
        start local 2 // int limit
         1: .line 582
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 3 /* fromLimit */
        start local 3 // int fromLimit
         2: .line 583
            goto 6
         3: .line 584
      StackMap locals: int int
      StackMap stack:
            aload 1 /* from */
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 2 /* limit */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         4: .line 585
            aload 0 /* this */
            iconst_1
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(ZLjava/nio/ByteBuffer;)V
         5: .line 586
            aload 1 /* from */
            iload 3 /* fromLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         6: .line 583
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 2 /* limit */
            if_icmpge 3
         7: .line 589
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 10
         8: .line 590
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         9: .line 591
            aload 1 /* from */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            pop
        10: .line 593
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int fromLimit
        end local 2 // int limit
        end local 1 // java.nio.ByteBuffer from
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   11     1       from  Ljava/nio/ByteBuffer;
            1   11     2      limit  I
            2   11     3  fromLimit  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  

  protected void writeNonBlocking(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // byte[] buf
        start local 2 // int off
        start local 3 // int len
         0: .line 614
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifeq 13
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 13
         1: .line 615
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         2: .line 616
            aload 1 /* buf */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:([BIILjava/nio/ByteBuffer;)I
            istore 4 /* thisTime */
        start local 4 // int thisTime
         3: .line 617
            iload 3 /* len */
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
         4: .line 618
            goto 12
         5: .line 619
      StackMap locals: int
      StackMap stack:
            iload 2 /* off */
            iload 4 /* thisTime */
            iadd
            istore 2 /* off */
         6: .line 620
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         7: .line 621
            iload 3 /* len */
            ifle 13
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 13
         8: .line 622
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         9: .line 623
            aload 1 /* buf */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:([BIILjava/nio/ByteBuffer;)I
            istore 4 /* thisTime */
        10: .line 624
            iload 3 /* len */
        11: .line 630
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
        12: .line 618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 5
        end local 4 // int thisTime
        13: .line 634
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifle 15
        14: .line 636
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            aload 1 /* buf */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.add:([BII)V
        15: .line 638
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] buf
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   16     1       buf  [B
            0   16     2       off  I
            0   16     3       len  I
            3   13     4  thisTime  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   
      off   
      len   

  protected void writeNonBlocking(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer from
         0: .line 659
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifeq 2
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 2
         1: .line 660
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlockingInternal:(Ljava/nio/ByteBuffer;)V
         2: .line 663
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 4
         3: .line 665
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.add:(Ljava/nio/ByteBuffer;)V
         4: .line 667
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer from
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    5     1  from  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  

  protected void writeNonBlockingInternal(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer from
         0: .line 679
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 3
         1: .line 680
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlockingDirect:(Ljava/nio/ByteBuffer;)V
         2: .line 681
            goto 9
         3: .line 682
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
         4: .line 683
            aload 1 /* from */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            pop
         5: .line 684
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifne 9
         6: .line 685
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         7: .line 686
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferWritable:()Z
            ifeq 9
         8: .line 687
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlockingDirect:(Ljava/nio/ByteBuffer;)V
         9: .line 691
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer from
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   10     1  from  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  

  protected void writeNonBlockingDirect(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer from
         0: .line 698
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            istore 2 /* limit */
        start local 2 // int limit
         1: .line 699
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 3 /* fromLimit */
        start local 3 // int fromLimit
         2: .line 700
            goto 9
         3: .line 701
      StackMap locals: int int
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 2 /* limit */
            iadd
            istore 4 /* newLimit */
        start local 4 // int newLimit
         4: .line 702
            aload 1 /* from */
            iload 4 /* newLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         5: .line 703
            aload 0 /* this */
            iconst_0
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(ZLjava/nio/ByteBuffer;)V
         6: .line 704
            aload 1 /* from */
            iload 3 /* fromLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         7: .line 705
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 4 /* newLimit */
            if_icmpeq 9
         8: .line 709
            return
        end local 4 // int newLimit
         9: .line 700
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 2 /* limit */
            if_icmpge 3
        10: .line 713
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 13
        11: .line 714
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite:()V
        12: .line 715
            aload 1 /* from */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.tomcat.util.net.SocketWrapperBase.transfer:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            pop
        13: .line 717
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int fromLimit
        end local 2 // int limit
        end local 1 // java.nio.ByteBuffer from
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   14     1       from  Ljava/nio/ByteBuffer;
            1   14     2      limit  I
            2   14     3  fromLimit  I
            4    9     4   newLimit  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  

  public boolean flush(boolean);
    descriptor: (Z)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean block
         0: .line 733
            iconst_0
            istore 2 /* result */
        start local 2 // boolean result
         1: .line 734
            iload 1 /* block */
            ifeq 4
         2: .line 736
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking:()V
         3: .line 737
            goto 5
         4: .line 738
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.flushNonBlocking:()Z
            istore 2 /* result */
         5: .line 741
      StackMap locals:
      StackMap stack:
            iload 2 /* result */
            ireturn
        end local 2 // boolean result
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    6     1   block  Z
            1    6     2  result  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

  protected void flushBlocking();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 746
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         1: .line 748
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifne 5
         2: .line 749
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.write:(Lorg/apache/tomcat/util/net/SocketWrapperBase;Z)Z
            pop
         3: .line 751
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifne 5
         4: .line 752
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         5: .line 756
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
    Exceptions:
      throws java.io.IOException

  protected boolean flushNonBlocking();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 760
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: istore 1 /* dataLeft */
        start local 1 // boolean dataLeft
         3: .line 763
            iload 1 /* dataLeft */
            ifeq 8
         4: .line 764
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         5: .line 765
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 6
            iconst_0
            goto 7
      StackMap locals: int
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: istore 1 /* dataLeft */
         8: .line 768
      StackMap locals:
      StackMap stack:
            iload 1 /* dataLeft */
            ifne 15
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.isEmpty:()Z
            ifne 15
         9: .line 769
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.write:(Lorg/apache/tomcat/util/net/SocketWrapperBase;Z)Z
            istore 1 /* dataLeft */
        10: .line 771
            iload 1 /* dataLeft */
            ifne 15
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifne 15
        11: .line 772
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
        12: .line 773
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
            ifeq 13
            iconst_0
            goto 14
      StackMap locals:
      StackMap stack:
        13: iconst_1
      StackMap locals:
      StackMap stack: int
        14: istore 1 /* dataLeft */
        15: .line 777
      StackMap locals:
      StackMap stack:
            iload 1 /* dataLeft */
            ireturn
        end local 1 // boolean dataLeft
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            3   16     1  dataLeft  Z
    Exceptions:
      throws java.io.IOException

  protected void doWrite(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean block
         0: .line 792
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForRead:()V
         1: .line 793
            aload 0 /* this */
            iload 1 /* block */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(ZLjava/nio/ByteBuffer;)V
         2: .line 794
            return
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1  block  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

  protected abstract void doWrite(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      from   

  public void processSocket(org.apache.tomcat.util.net.SocketEvent, boolean);
    descriptor: (Lorg/apache/tomcat/util/net/SocketEvent;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // org.apache.tomcat.util.net.SocketEvent socketStatus
        start local 2 // boolean dispatch
         0: .line 812
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
            aload 0 /* this */
            aload 1 /* socketStatus */
            iload 2 /* dispatch */
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.processSocket:(Lorg/apache/tomcat/util/net/SocketWrapperBase;Lorg/apache/tomcat/util/net/SocketEvent;Z)Z
            pop
         1: .line 813
            return
        end local 2 // boolean dispatch
        end local 1 // org.apache.tomcat.util.net.SocketEvent socketStatus
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    2     1  socketStatus  Lorg/apache/tomcat/util/net/SocketEvent;
            0    2     2      dispatch  Z
    MethodParameters:
              Name  Flags
      socketStatus  
      dispatch      

  public abstract void registerReadInterest();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void registerWriteInterest();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.apache.tomcat.util.net.SendfileDataBase createSendfileData(java.lang.String, long, long);
    descriptor: (Ljava/lang/String;JJ)Lorg/apache/tomcat/util/net/SendfileDataBase;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      filename  
      pos       
      length    

  public abstract org.apache.tomcat.util.net.SendfileState processSendfile(org.apache.tomcat.util.net.SendfileDataBase);
    descriptor: (Lorg/apache/tomcat/util/net/SendfileDataBase;)Lorg/apache/tomcat/util/net/SendfileState;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
              Name  Flags
      sendfileData  

  public abstract void doClientAuth(org.apache.tomcat.util.net.SSLSupport);
    descriptor: (Lorg/apache/tomcat/util/net/SSLSupport;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      sslSupport  

  public abstract org.apache.tomcat.util.net.SSLSupport getSslSupport(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/tomcat/util/net/SSLSupport;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                    Name  Flags
      clientCertProvider  

  public boolean hasAsyncIO();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 1174
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean needSemaphores();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 1183
            iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean hasPerOperationTimeout();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 1192
            iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean isReadPending();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 1201
            iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean isWritePending();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 1210
            iconst_0
            ireturn
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;

  public boolean awaitReadComplete(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=3
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 1225
            iconst_1
            ireturn
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1  timeout  J
            0    1     3     unit  Ljava/util/concurrent/TimeUnit;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      timeout  
      unit     

  public boolean awaitWriteComplete(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=3
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 1240
            iconst_1
            ireturn
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1  timeout  J
            0    1     3     unit  Ljava/util/concurrent/TimeUnit;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      timeout  
      unit     

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState read(long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>, java.nio.ByteBuffer[]);
    descriptor: (JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=11, locals=7, args_size=6
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
        start local 4 // java.lang.Object attachment
        start local 5 // java.nio.channels.CompletionHandler handler
        start local 6 // java.nio.ByteBuffer[] dsts
         0: .line 1260
            aload 6 /* dsts */
            ifnonnull 2
         1: .line 1261
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* dsts */
            iconst_0
            aload 6 /* dsts */
            arraylength
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.CLASSIC:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            lload 1 /* timeout */
            aload 3 /* unit */
            aload 4 /* attachment */
            aconst_null
            aload 5 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.read:([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 6 // java.nio.ByteBuffer[] dsts
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // java.lang.Object attachment
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1     timeout  J
            0    3     3        unit  Ljava/util/concurrent/TimeUnit;
            0    3     4  attachment  TA;
            0    3     5     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            0    3     6        dsts  [Ljava/nio/ByteBuffer;
    Signature: <A:Ljava/lang/Object;>(JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      timeout     
      unit        
      attachment  
      handler     
      dsts        

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState read(org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>, java.nio.ByteBuffer[]);
    descriptor: (Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=11, locals=9, args_size=8
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        start local 2 // long timeout
        start local 4 // java.util.concurrent.TimeUnit unit
        start local 5 // java.lang.Object attachment
        start local 6 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        start local 7 // java.nio.channels.CompletionHandler handler
        start local 8 // java.nio.ByteBuffer[] dsts
         0: .line 1289
            aload 8 /* dsts */
            ifnonnull 2
         1: .line 1290
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1292
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* dsts */
            iconst_0
            aload 8 /* dsts */
            arraylength
            aload 1 /* block */
            lload 2 /* timeout */
            aload 4 /* unit */
            aload 5 /* attachment */
            aload 6 /* check */
            aload 7 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.read:([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 8 // java.nio.ByteBuffer[] dsts
        end local 7 // java.nio.channels.CompletionHandler handler
        end local 6 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        end local 5 // java.lang.Object attachment
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long timeout
        end local 1 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0    3     2     timeout  J
            0    3     4        unit  Ljava/util/concurrent/TimeUnit;
            0    3     5  attachment  TA;
            0    3     6       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0    3     7     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            0    3     8        dsts  [Ljava/nio/ByteBuffer;
    Signature: <A:Ljava/lang/Object;>(Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     
      dsts        

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState read(java.nio.ByteBuffer[], int, int, org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>);
    descriptor: ([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=12, locals=11, args_size=10
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer[] dsts
        start local 2 // int offset
        start local 3 // int length
        start local 4 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        start local 5 // long timeout
        start local 7 // java.util.concurrent.TimeUnit unit
        start local 8 // java.lang.Object attachment
        start local 9 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        start local 10 // java.nio.channels.CompletionHandler handler
         0: .line 1320
            aload 0 /* this */
            iconst_1
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            aload 4 /* block */
            lload 5 /* timeout */
            aload 7 /* unit */
            aload 8 /* attachment */
            aload 9 /* check */
            aload 10 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.vectoredOperation:(Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 10 // java.nio.channels.CompletionHandler handler
        end local 9 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        end local 8 // java.lang.Object attachment
        end local 7 // java.util.concurrent.TimeUnit unit
        end local 5 // long timeout
        end local 4 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1        dsts  [Ljava/nio/ByteBuffer;
            0    1     2      offset  I
            0    1     3      length  I
            0    1     4       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0    1     5     timeout  J
            0    1     7        unit  Ljava/util/concurrent/TimeUnit;
            0    1     8  attachment  TA;
            0    1     9       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0    1    10     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
    Signature: <A:Ljava/lang/Object;>([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      dsts        
      offset      
      length      
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState write(long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>, java.nio.ByteBuffer[]);
    descriptor: (JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=11, locals=7, args_size=6
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
        start local 4 // java.lang.Object attachment
        start local 5 // java.nio.channels.CompletionHandler handler
        start local 6 // java.nio.ByteBuffer[] srcs
         0: .line 1341
            aload 6 /* srcs */
            ifnonnull 2
         1: .line 1342
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* srcs */
            iconst_0
            aload 6 /* srcs */
            arraylength
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.CLASSIC:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            lload 1 /* timeout */
            aload 3 /* unit */
            aload 4 /* attachment */
            aconst_null
            aload 5 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.write:([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 6 // java.nio.ByteBuffer[] srcs
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // java.lang.Object attachment
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1     timeout  J
            0    3     3        unit  Ljava/util/concurrent/TimeUnit;
            0    3     4  attachment  TA;
            0    3     5     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            0    3     6        srcs  [Ljava/nio/ByteBuffer;
    Signature: <A:Ljava/lang/Object;>(JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      timeout     
      unit        
      attachment  
      handler     
      srcs        

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState write(org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>, java.nio.ByteBuffer[]);
    descriptor: (Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=11, locals=9, args_size=8
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        start local 2 // long timeout
        start local 4 // java.util.concurrent.TimeUnit unit
        start local 5 // java.lang.Object attachment
        start local 6 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        start local 7 // java.nio.channels.CompletionHandler handler
        start local 8 // java.nio.ByteBuffer[] srcs
         0: .line 1371
            aload 8 /* srcs */
            ifnonnull 2
         1: .line 1372
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1374
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* srcs */
            iconst_0
            aload 8 /* srcs */
            arraylength
            aload 1 /* block */
            lload 2 /* timeout */
            aload 4 /* unit */
            aload 5 /* attachment */
            aload 6 /* check */
            aload 7 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.write:([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 8 // java.nio.ByteBuffer[] srcs
        end local 7 // java.nio.channels.CompletionHandler handler
        end local 6 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        end local 5 // java.lang.Object attachment
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long timeout
        end local 1 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0    3     2     timeout  J
            0    3     4        unit  Ljava/util/concurrent/TimeUnit;
            0    3     5  attachment  TA;
            0    3     6       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0    3     7     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            0    3     8        srcs  [Ljava/nio/ByteBuffer;
    Signature: <A:Ljava/lang/Object;>(Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;[Ljava/nio/ByteBuffer;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     
      srcs        

  public final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState write(java.nio.ByteBuffer[], int, int, org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>);
    descriptor: ([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=12, locals=11, args_size=10
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
        start local 4 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        start local 5 // long timeout
        start local 7 // java.util.concurrent.TimeUnit unit
        start local 8 // java.lang.Object attachment
        start local 9 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        start local 10 // java.nio.channels.CompletionHandler handler
         0: .line 1403
            aload 0 /* this */
            iconst_0
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            aload 4 /* block */
            lload 5 /* timeout */
            aload 7 /* unit */
            aload 8 /* attachment */
            aload 9 /* check */
            aload 10 /* handler */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.vectoredOperation:(Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 10 // java.nio.channels.CompletionHandler handler
        end local 9 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        end local 8 // java.lang.Object attachment
        end local 7 // java.util.concurrent.TimeUnit unit
        end local 5 // long timeout
        end local 4 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    1     1        srcs  [Ljava/nio/ByteBuffer;
            0    1     2      offset  I
            0    1     3      length  I
            0    1     4       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0    1     5     timeout  J
            0    1     7        unit  Ljava/util/concurrent/TimeUnit;
            0    1     8  attachment  TA;
            0    1     9       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0    1    10     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
    Signature: <A:Ljava/lang/Object;>([Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      srcs        
      offset      
      length      
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     

  protected final <A> org.apache.tomcat.util.net.SocketWrapperBase$CompletionState vectoredOperation(boolean, java.nio.ByteBuffer[], int, int, org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>);
    descriptor: (Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=14, locals=16, args_size=11
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean read
        start local 2 // java.nio.ByteBuffer[] buffers
        start local 3 // int offset
        start local 4 // int length
        start local 5 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        start local 6 // long timeout
        start local 8 // java.util.concurrent.TimeUnit unit
        start local 9 // java.lang.Object attachment
        start local 10 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        start local 11 // java.nio.channels.CompletionHandler handler
         0: .line 1434
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getError:()Ljava/io/IOException;
            astore 12 /* ioe */
        start local 12 // java.io.IOException ioe
         1: .line 1435
            aload 12 /* ioe */
            ifnull 4
         2: .line 1436
            aload 11 /* handler */
            aload 12 /* ioe */
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
         3: .line 1437
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
         4: .line 1439
      StackMap locals: java.io.IOException
      StackMap stack:
            lload 6 /* timeout */
            ldc -1
            lcmp
            ifne 10
         5: .line 1440
            iload 1 /* read */
            ifeq 6
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getReadTimeout:()J
            goto 7
      StackMap locals:
      StackMap stack:
         6: aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getWriteTimeout:()J
      StackMap locals:
      StackMap stack: long
         7: invokestatic org.apache.tomcat.util.net.AbstractEndpoint.toTimeout:(J)J
            lstore 6 /* timeout */
         8: .line 1441
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            astore 8 /* unit */
         9: .line 1442
            goto 17
      StackMap locals:
      StackMap stack:
        10: aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.hasPerOperationTimeout:()Z
            ifne 17
            aload 8 /* unit */
            lload 6 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            iload 1 /* read */
            ifeq 11
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getReadTimeout:()J
            goto 12
      StackMap locals:
      StackMap stack: long
        11: aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getWriteTimeout:()J
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.io.IOException
      StackMap stack: long long
        12: lcmp
            ifeq 17
        13: .line 1443
            iload 1 /* read */
            ifeq 16
        14: .line 1444
            aload 0 /* this */
            aload 8 /* unit */
            lload 6 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.setReadTimeout:(J)V
        15: .line 1445
            goto 17
        16: .line 1446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* unit */
            lload 6 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.setWriteTimeout:(J)V
        17: .line 1449
      StackMap locals:
      StackMap stack:
            aload 5 /* block */
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.BLOCK:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            if_acmpeq 18
            aload 5 /* block */
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.SEMI_BLOCK:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            if_acmpne 26
        18: .line 1451
      StackMap locals:
      StackMap stack:
            iload 1 /* read */
            ifeq 19
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
            lload 6 /* timeout */
            aload 8 /* unit */
            invokevirtual java.util.concurrent.Semaphore.tryAcquire:(JLjava/util/concurrent/TimeUnit;)Z
            ifne 34
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
            lload 6 /* timeout */
            aload 8 /* unit */
            invokevirtual java.util.concurrent.Semaphore.tryAcquire:(JLjava/util/concurrent/TimeUnit;)Z
            ifne 34
        20: .line 1452
      StackMap locals:
      StackMap stack:
            aload 11 /* handler */
            new java.net.SocketTimeoutException
            dup
            invokespecial java.net.SocketTimeoutException.<init>:()V
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        21: .line 1453
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
        22: areturn
        23: .line 1455
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 13 /* e */
        start local 13 // java.lang.InterruptedException e
        24: .line 1456
            aload 11 /* handler */
            aload 13 /* e */
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        25: .line 1457
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 13 // java.lang.InterruptedException e
        26: .line 1460
      StackMap locals:
      StackMap stack:
            iload 1 /* read */
            ifeq 27
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
            invokevirtual java.util.concurrent.Semaphore.tryAcquire:()Z
            ifne 34
            goto 28
      StackMap locals:
      StackMap stack:
        27: aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
            invokevirtual java.util.concurrent.Semaphore.tryAcquire:()Z
            ifne 34
        28: .line 1461
      StackMap locals:
      StackMap stack:
            aload 5 /* block */
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.NON_BLOCK:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            if_acmpne 30
        29: .line 1462
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.NOT_DONE:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        30: .line 1464
      StackMap locals:
      StackMap stack:
            aload 11 /* handler */
            iload 1 /* read */
            ifeq 31
            new java.nio.channels.ReadPendingException
            dup
            invokespecial java.nio.channels.ReadPendingException.<init>:()V
            goto 32
      StackMap locals:
      StackMap stack: java.nio.channels.CompletionHandler
        31: new java.nio.channels.WritePendingException
            dup
            invokespecial java.nio.channels.WritePendingException.<init>:()V
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.io.IOException
      StackMap stack: java.nio.channels.CompletionHandler java.lang.IllegalStateException
        32: aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        33: .line 1465
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        34: .line 1469
      StackMap locals:
      StackMap stack:
            new org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler
            dup
            aload 0 /* this */
            invokespecial org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler.<init>:(Lorg/apache/tomcat/util/net/SocketWrapperBase;)V
            astore 13 /* completion */
        start local 13 // org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler completion
        35: .line 1470
            aload 0 /* this */
            iload 1 /* read */
            aload 2 /* buffers */
            iload 3 /* offset */
            iload 4 /* length */
            aload 5 /* block */
            lload 6 /* timeout */
            aload 8 /* unit */
        36: .line 1471
            aload 9 /* attachment */
            aload 10 /* check */
            aload 11 /* handler */
            iload 1 /* read */
            ifeq 37
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
            goto 38
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.io.IOException org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler
      StackMap stack: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler
        37: aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.io.IOException org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler
      StackMap stack: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.util.concurrent.Semaphore
        38: aload 13 /* completion */
        39: .line 1470
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.newOperationState:(Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;Ljava/util/concurrent/Semaphore;Lorg/apache/tomcat/util/net/SocketWrapperBase$VectoredIOCompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
            astore 14 /* state */
        start local 14 // org.apache.tomcat.util.net.SocketWrapperBase$OperationState state
        40: .line 1472
            iload 1 /* read */
            ifeq 43
        41: .line 1473
            aload 0 /* this */
            aload 14 /* state */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        42: .line 1474
            goto 44
        43: .line 1475
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase$OperationState
      StackMap stack:
            aload 0 /* this */
            aload 14 /* state */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        44: .line 1477
      StackMap locals:
      StackMap stack:
            aload 14 /* state */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase$OperationState.start:()V
        45: .line 1478
            aload 5 /* block */
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.BLOCK:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            if_acmpne 61
        46: .line 1479
            aload 14 /* state */
            dup
            astore 15
            monitorenter
        47: .line 1480
            aload 14 /* state */
            getfield org.apache.tomcat.util.net.SocketWrapperBase$OperationState.state:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.PENDING:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            if_acmpne 57
        48: .line 1482
            aload 14 /* state */
            aload 8 /* unit */
            lload 6 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual java.lang.Object.wait:(J)V
        49: .line 1483
            aload 14 /* state */
            getfield org.apache.tomcat.util.net.SocketWrapperBase$OperationState.state:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.PENDING:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            if_acmpne 57
        50: .line 1484
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
        51: aload 15
            monitorexit
        52: areturn
        53: .line 1486
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase int java.nio.ByteBuffer[] int int org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode long java.util.concurrent.TimeUnit java.lang.Object org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck java.nio.channels.CompletionHandler java.io.IOException org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler org.apache.tomcat.util.net.SocketWrapperBase$OperationState org.apache.tomcat.util.net.SocketWrapperBase$OperationState
      StackMap stack: java.lang.InterruptedException
            pop
        54: .line 1487
            aload 13 /* completion */
            new java.net.SocketTimeoutException
            dup
            invokespecial java.net.SocketTimeoutException.<init>:()V
            aload 14 /* state */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler.failed:(Ljava/lang/Throwable;Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;)V
        55: .line 1488
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            aload 15
            monitorexit
        56: areturn
        57: .line 1479
      StackMap locals:
      StackMap stack:
            aload 15
            monitorexit
        58: goto 61
      StackMap locals:
      StackMap stack: java.lang.Throwable
        59: aload 15
            monitorexit
        60: athrow
        61: .line 1493
      StackMap locals:
      StackMap stack:
            aload 14 /* state */
            getfield org.apache.tomcat.util.net.SocketWrapperBase$OperationState.state:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        end local 14 // org.apache.tomcat.util.net.SocketWrapperBase$OperationState state
        end local 13 // org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler completion
        end local 12 // java.io.IOException ioe
        end local 11 // java.nio.channels.CompletionHandler handler
        end local 10 // org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck check
        end local 9 // java.lang.Object attachment
        end local 8 // java.util.concurrent.TimeUnit unit
        end local 6 // long timeout
        end local 5 // org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode block
        end local 4 // int length
        end local 3 // int offset
        end local 2 // java.nio.ByteBuffer[] buffers
        end local 1 // boolean read
        end local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   62     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   62     1        read  Z
            0   62     2     buffers  [Ljava/nio/ByteBuffer;
            0   62     3      offset  I
            0   62     4      length  I
            0   62     5       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0   62     6     timeout  J
            0   62     8        unit  Ljava/util/concurrent/TimeUnit;
            0   62     9  attachment  TA;
            0   62    10       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0   62    11     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            1   62    12         ioe  Ljava/io/IOException;
           24   26    13           e  Ljava/lang/InterruptedException;
           35   62    13  completion  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.VectoredIOCompletionHandler<TA;>;
           40   62    14       state  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.OperationState<TA;>;
      Exception table:
        from    to  target  type
          18    22      23  Class java.lang.InterruptedException
          48    51      53  Class java.lang.InterruptedException
          47    52      59  any
          53    56      59  any
          57    58      59  any
          59    60      59  any
    Signature: <A:Ljava/lang/Object;>(Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;)Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
    MethodParameters:
            Name  Flags
      read        
      buffers     
      offset      
      length      
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     

  protected abstract <A> org.apache.tomcat.util.net.SocketWrapperBase<E>.OperationState<A> newOperationState(boolean, java.nio.ByteBuffer[], int, int, org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode, long, java.util.concurrent.TimeUnit, A, org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>, java.util.concurrent.Semaphore, org.apache.tomcat.util.net.SocketWrapperBase<E>.VectoredIOCompletionHandler<A>);
    descriptor: (Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler;Ljava/util/concurrent/Semaphore;Lorg/apache/tomcat/util/net/SocketWrapperBase$VectoredIOCompletionHandler;)Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: <A:Ljava/lang/Object;>(Z[Ljava/nio/ByteBuffer;IILorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;JLjava/util/concurrent/TimeUnit;TA;Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;Ljava/util/concurrent/Semaphore;Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.VectoredIOCompletionHandler<TA;>;)Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.OperationState<TA;>;
    MethodParameters:
            Name  Flags
      read        
      buffers     
      offset      
      length      
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     
      semaphore   
      completion  

  protected static int transfer(byte[], int, int, java.nio.ByteBuffer);
    descriptor: ([BIILjava/nio/ByteBuffer;)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // byte[] from
        start local 1 // int offset
        start local 2 // int length
        start local 3 // java.nio.ByteBuffer to
         0: .line 1505
            iload 2 /* length */
            aload 3 /* to */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* max */
        start local 4 // int max
         1: .line 1506
            iload 4 /* max */
            ifle 3
         2: .line 1507
            aload 3 /* to */
            aload 0 /* from */
            iload 1 /* offset */
            iload 4 /* max */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         3: .line 1509
      StackMap locals: int
      StackMap stack:
            iload 4 /* max */
            ireturn
        end local 4 // int max
        end local 3 // java.nio.ByteBuffer to
        end local 2 // int length
        end local 1 // int offset
        end local 0 // byte[] from
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    from  [B
            0    4     1  offset  I
            0    4     2  length  I
            0    4     3      to  Ljava/nio/ByteBuffer;
            1    4     4     max  I
    MethodParameters:
        Name  Flags
      from    
      offset  
      length  
      to      

  protected static int transfer(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.nio.ByteBuffer from
        start local 1 // java.nio.ByteBuffer to
         0: .line 1513
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 1 /* to */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.lang.Math.min:(II)I
            istore 2 /* max */
        start local 2 // int max
         1: .line 1514
            iload 2 /* max */
            ifle 6
         2: .line 1515
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 3 /* fromLimit */
        start local 3 // int fromLimit
         3: .line 1516
            aload 0 /* from */
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 2 /* max */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         4: .line 1517
            aload 1 /* to */
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         5: .line 1518
            aload 0 /* from */
            iload 3 /* fromLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 3 // int fromLimit
         6: .line 1520
      StackMap locals: int
      StackMap stack:
            iload 2 /* max */
            ireturn
        end local 2 // int max
        end local 1 // java.nio.ByteBuffer to
        end local 0 // java.nio.ByteBuffer from
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       from  Ljava/nio/ByteBuffer;
            0    7     1         to  Ljava/nio/ByteBuffer;
            1    7     2        max  I
            3    6     3  fromLimit  I
    MethodParameters:
      Name  Flags
      from  
      to    
}
Signature: <E:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "SocketWrapperBase.java"
NestMembers:
  org.apache.tomcat.util.net.SocketWrapperBase$1  org.apache.tomcat.util.net.SocketWrapperBase$2  org.apache.tomcat.util.net.SocketWrapperBase$3  org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode  org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck  org.apache.tomcat.util.net.SocketWrapperBase$CompletionHandlerCall  org.apache.tomcat.util.net.SocketWrapperBase$CompletionState  org.apache.tomcat.util.net.SocketWrapperBase$OperationState  org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler
InnerClasses:
  public ReadLock = java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock of java.util.concurrent.locks.ReentrantReadWriteLock
  public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock
  org.apache.tomcat.util.net.SocketWrapperBase$1
  org.apache.tomcat.util.net.SocketWrapperBase$2
  org.apache.tomcat.util.net.SocketWrapperBase$3
  public final BlockingMode = org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode of org.apache.tomcat.util.net.SocketWrapperBase
  public abstract CompletionCheck = org.apache.tomcat.util.net.SocketWrapperBase$CompletionCheck of org.apache.tomcat.util.net.SocketWrapperBase
  public final CompletionHandlerCall = org.apache.tomcat.util.net.SocketWrapperBase$CompletionHandlerCall of org.apache.tomcat.util.net.SocketWrapperBase
  public final CompletionState = org.apache.tomcat.util.net.SocketWrapperBase$CompletionState of org.apache.tomcat.util.net.SocketWrapperBase
  protected abstract OperationState = org.apache.tomcat.util.net.SocketWrapperBase$OperationState of org.apache.tomcat.util.net.SocketWrapperBase
  protected VectoredIOCompletionHandler = org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler of org.apache.tomcat.util.net.SocketWrapperBase