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 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 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<*>;

  protected java.lang.Object currentProcessor;
    descriptor: Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED

  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 40
            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 42
            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 881
            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 899
            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 917
            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 931
            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 938
            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=3, 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 110
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            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 51
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readTimeout:J
         3: .line 52
            aload 0 /* this */
            ldc -1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeTimeout:J
         4: .line 54
            aload 0 /* this */
            bipush 100
            putfield org.apache.tomcat.util.net.SocketWrapperBase.keepAliveLeft:I
         5: .line 55
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.negotiatedProtocol:Ljava/lang/String;
         6: .line 60
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localAddr:Ljava/lang/String;
         7: .line 61
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localName:Ljava/lang/String;
         8: .line 62
            aload 0 /* this */
            iconst_m1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.localPort:I
         9: .line 63
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remoteAddr:Ljava/lang/String;
        10: .line 64
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remoteHost:Ljava/lang/String;
        11: .line 65
            aload 0 /* this */
            iconst_m1
            putfield org.apache.tomcat.util.net.SocketWrapperBase.remotePort:I
        12: .line 72
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
        13: .line 77
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        14: .line 82
            aload 0 /* this */
            ldc 65536
            putfield org.apache.tomcat.util.net.SocketWrapperBase.bufferedWriteSize:I
        15: .line 94
            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;
        16: .line 100
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        17: .line 102
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writeOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        18: .line 108
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.currentProcessor:Ljava/lang/Object;
        19: .line 111
            aload 0 /* this */
            aload 1 /* socket */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
        20: .line 112
            aload 0 /* this */
            aload 2 /* endpoint */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.endpoint:Lorg/apache/tomcat/util/net/AbstractEndpoint;
        21: .line 113
            aload 2 /* endpoint */
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.getUseAsyncIO:()Z
            ifne 22
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.needSemaphores:()Z
            ifeq 25
        22: .line 114
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase java.lang.Object org.apache.tomcat.util.net.AbstractEndpoint
      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;
        23: .line 115
            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;
        24: .line 116
            goto 27
        25: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readPending:Ljava/util/concurrent/Semaphore;
        26: .line 118
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.SocketWrapperBase.writePending:Ljava/util/concurrent/Semaphore;
        27: .line 120
      StackMap locals:
      StackMap stack:
            return
        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   28     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   28     1    socket  TE;
            0   28     2  endpoint  Lorg/apache/tomcat/util/net/AbstractEndpoint<TE;*>;
    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 123
            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 127
            aload 0 /* this */
            aload 1 /* closedSocket */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.socket:Ljava/lang/Object;
         1: .line 128
            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 131
            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 java.lang.Object getCurrentProcessor();
    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 135
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.currentProcessor: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;>;

  public void setCurrentProcessor(java.lang.Object);
    descriptor: (Ljava/lang/Object;)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.Object currentProcessor
         0: .line 139
            aload 0 /* this */
            aload 1 /* currentProcessor */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.currentProcessor:Ljava/lang/Object;
         1: .line 140
            return
        end local 1 // java.lang.Object currentProcessor
        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  currentProcessor  Ljava/lang/Object;
    MethodParameters:
                  Name  Flags
      currentProcessor  

  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 150
            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 151
            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 152
      StackMap locals: java.util.concurrent.Executor
      StackMap stack:
            new java.util.concurrent.RejectedExecutionException
            dup
            invokespecial java.util.concurrent.RejectedExecutionException.<init>:()V
            athrow
         3: .line 154
      StackMap locals:
      StackMap stack:
            aload 2 /* executor */
            aload 1 /* runnable */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         4: .line 155
            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 157
            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 161
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            ifnull 2
         1: .line 162
            return
         2: .line 164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* error */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
         3: .line 165
            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 167
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            ifnull 2
         1: .line 168
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.error:Ljava/io/IOException;
            athrow
         2: .line 170
      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 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
            return
        end local 1 // int keepAliveLeft
        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  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 217
            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 220
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteHost:Ljava/lang/String;
            ifnonnull 2
         1: .line 221
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemoteHost:()V
         2: .line 223
      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 228
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remoteAddr:Ljava/lang/String;
            ifnonnull 2
         1: .line 229
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemoteAddr:()V
         2: .line 231
      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 236
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.remotePort:I
            iconst_m1
            if_icmpne 2
         1: .line 237
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateRemotePort:()V
         2: .line 239
      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 244
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localName:Ljava/lang/String;
            ifnonnull 2
         1: .line 245
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalName:()V
         2: .line 247
      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 252
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localAddr:Ljava/lang/String;
            ifnonnull 2
         1: .line 253
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalAddr:()V
         2: .line 255
      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 260
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.localPort:I
            iconst_m1
            if_icmpne 2
         1: .line 261
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.populateLocalPort:()V
         2: .line 263
      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 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 267
            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 271
            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 275
            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 293
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.canWrite:()Z
            istore 1 /* result */
        start local 1 // boolean result
         1: .line 294
            iload 1 /* result */
            ifne 3
         2: .line 295
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.registerWriteInterest:()V
         3: .line 297
      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 302
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            ifnonnull 2
         1: .line 303
            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 305
      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 317
            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 327
            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 328
            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 329
            aload 4 /* readBuffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 5 /* remaining */
        start local 5 // int remaining
         3: .line 333
            iload 5 /* remaining */
            ifle 8
         4: .line 334
            iload 5 /* remaining */
            iload 3 /* len */
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* remaining */
         5: .line 335
            aload 4 /* readBuffer */
            aload 1 /* b */
            iload 2 /* off */
            iload 5 /* remaining */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         6: .line 337
            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 338
            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 341
      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 348
            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 349
            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 351
            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 352
            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 354
      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 370
            aload 1 /* returnedInput */
            ifnull 2
         1: .line 371
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SocketWrapperBase.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            aload 1 /* returnedInput */
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.unReadReadBuffer:(Ljava/nio/ByteBuffer;)V
         2: .line 373
      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    3     0           this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    3     1  returnedInput  Ljava/nio/ByteBuffer;
    MethodParameters:
               Name  Flags
      returnedInput  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
         0: .line 380
            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 15
         1: .line 382
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.getHandler:()Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler;
            aload 0 /* this */
            invokeinterface org.apache.tomcat.util.net.AbstractEndpoint$Handler.release:(Lorg/apache/tomcat/util/net/SocketWrapperBase;)V
         2: .line 383
            goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: astore 1 /* e */
        start local 1 // java.lang.Throwable e
         4: .line 384
            aload 1 /* e */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
         5: .line 385
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 7
         6: .line 386
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "endpoint.debug.handlerRelease"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* e */
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable e
         7: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection:()J
            pop2
         8: .line 390
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doClose:()V
            goto 15
         9: .line 388
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
        10: .line 389
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection:()J
            pop2
        11: .line 390
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doClose:()V
        12: .line 391
            aload 2
            athrow
        13: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection:()J
            pop2
        14: .line 390
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doClose:()V
        15: .line 393
      StackMap locals:
      StackMap stack:
            return
        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;>;
            4    7     1     e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable
           1     7       9  any

  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 405
            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 436
            iload 4 /* len */
            ifeq 1
            aload 2 /* buf */
            ifnonnull 2
         1: .line 437
      StackMap locals:
      StackMap stack:
            return
         2: .line 450
      StackMap locals:
      StackMap stack:
            iload 1 /* block */
            ifeq 5
         3: .line 451
            aload 0 /* this */
            aload 2 /* buf */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking:([BII)V
         4: .line 452
            goto 6
         5: .line 453
      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 455
      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 483
            aload 2 /* from */
            ifnull 1
            aload 2 /* from */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 2
         1: .line 484
      StackMap locals:
      StackMap stack:
            return
         2: .line 497
      StackMap locals:
      StackMap stack:
            iload 1 /* block */
            ifeq 5
         3: .line 498
            aload 0 /* this */
            aload 2 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking:(Ljava/nio/ByteBuffer;)V
         4: .line 499
            goto 6
         5: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlocking:(Ljava/nio/ByteBuffer;)V
         6: .line 502
      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 521
            iload 3 /* len */
            ifle 11
         1: .line 522
            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 523
            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 524
            iload 3 /* len */
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
         4: .line 525
            goto 10
         5: .line 526
      StackMap locals: int
      StackMap stack:
            iload 2 /* off */
            iload 4 /* thisTime */
            iadd
            istore 2 /* off */
         6: .line 527
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         7: .line 528
            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
         8: .line 529
            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 */
         9: .line 530
            iload 3 /* len */
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
        10: .line 525
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifgt 5
        end local 4 // int thisTime
        11: .line 533
      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   12     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   12     1       buf  [B
            0   12     2       off  I
            0   12     3       len  I
            3   11     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 1 /* from */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 8
         1: .line 551
            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 552
            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
         3: .line 553
            goto 7
         4: .line 554
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         5: .line 555
            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
         6: .line 556
            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
         7: .line 553
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 4
         8: .line 559
      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 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 580
            iload 3 /* len */
            ifle 14
            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 14
         1: .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.isWriteBufferWritable:()Z
            ifeq 14
         2: .line 582
            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
         3: .line 583
            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
         4: .line 584
            iload 3 /* len */
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
         5: .line 585
            goto 13
         6: .line 586
      StackMap locals: int
      StackMap stack:
            iload 2 /* off */
            iload 4 /* thisTime */
            iadd
            istore 2 /* off */
         7: .line 587
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         8: .line 588
            iload 3 /* len */
            ifle 14
            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 14
         9: .line 589
            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
        10: .line 590
            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 */
        11: .line 591
            iload 3 /* len */
        12: .line 597
            iload 4 /* thisTime */
            isub
            istore 3 /* len */
        13: .line 585
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifgt 6
        end local 4 // int thisTime
        14: .line 601
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifle 16
        15: .line 603
            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
        16: .line 605
      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   17     0      this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   17     1       buf  [B
            0   17     2       off  I
            0   17     3       len  I
            4   14     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 626
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()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
         1: .line 627
            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
         2: .line 628
            aload 0 /* this */
            aload 1 /* from */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.writeNonBlockingInternal:(Ljava/nio/ByteBuffer;)V
         3: .line 631
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 5
         4: .line 633
            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
         5: .line 635
      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    6     0  this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0    6     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 647
            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 648
            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
         2: .line 649
            goto 7
         3: .line 650
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         4: .line 651
            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 8
         5: .line 652
            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
         6: .line 653
            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
         7: .line 649
      StackMap locals:
      StackMap stack:
            aload 1 /* from */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 3
         8: .line 658
      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  

  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 674
            iconst_0
            istore 2 /* result */
        start local 2 // boolean result
         1: .line 675
            iload 1 /* block */
            ifeq 4
         2: .line 677
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking:()V
         3: .line 678
            goto 5
         4: .line 679
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.flushNonBlocking:()Z
            istore 2 /* result */
         5: .line 682
      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 687
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         1: .line 689
            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 690
            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 692
            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 693
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         5: .line 697
      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 701
            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 704
            iload 1 /* dataLeft */
            ifeq 8
         4: .line 705
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
         5: .line 706
            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 709
      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 710
            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 712
            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 713
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.doWrite:(Z)V
        12: .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.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 718
      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 733
            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 734
            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 735
            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 753
            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 754
            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 1117
            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 1126
            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 1135
            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 1144
            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 1153
            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 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 1173
            aload 6 /* dsts */
            ifnonnull 2
         1: .line 1174
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1176
      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 1202
            aload 8 /* dsts */
            ifnonnull 2
         1: .line 1203
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1205
      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 1233
            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 1254
            aload 6 /* srcs */
            ifnonnull 2
         1: .line 1255
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1257
      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 1284
            aload 8 /* srcs */
            ifnonnull 2
         1: .line 1285
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1287
      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 1316
            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 1347
            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 1348
            aload 12 /* ioe */
            ifnull 4
         2: .line 1349
            aload 11 /* handler */
            aload 12 /* ioe */
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
         3: .line 1350
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
         4: .line 1352
      StackMap locals: java.io.IOException
      StackMap stack:
            lload 6 /* timeout */
            ldc -1
            lcmp
            ifne 10
         5: .line 1353
            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 1354
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            astore 8 /* unit */
         9: .line 1355
            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 1356
            iload 1 /* read */
            ifeq 16
        14: .line 1357
            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 1358
            goto 17
        16: .line 1359
      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 1362
      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 1364
      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 1365
      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 1366
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
        22: areturn
        23: .line 1368
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 13 /* e */
        start local 13 // java.lang.InterruptedException e
        24: .line 1369
            aload 11 /* handler */
            aload 13 /* e */
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        25: .line 1370
            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 1373
      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 1374
      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 1375
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.NOT_DONE:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        30: .line 1377
      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 1378
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            areturn
        34: .line 1382
      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 1383
            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 1384
            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 1383
            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 1385
            iload 1 /* read */
            ifeq 43
        41: .line 1386
            aload 0 /* this */
            aload 14 /* state */
            putfield org.apache.tomcat.util.net.SocketWrapperBase.readOperation:Lorg/apache/tomcat/util/net/SocketWrapperBase$OperationState;
        42: .line 1387
            goto 44
        43: .line 1388
      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 1390
      StackMap locals:
      StackMap stack:
            aload 14 /* state */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase$OperationState.start:()V
        45: .line 1391
            aload 5 /* block */
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$BlockingMode.BLOCK:Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            if_acmpne 64
        46: .line 1392
            aload 14 /* state */
            dup
            astore 15
            monitorenter
        47: .line 1393
            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 60
        48: .line 1395
            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 1396
            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 60
        50: .line 1397
            aload 11 /* handler */
            ifnull 52
            aload 14 /* state */
            getfield org.apache.tomcat.util.net.SocketWrapperBase$OperationState.callHandler:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_1
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 52
        51: .line 1398
            aload 11 /* handler */
            new java.net.SocketTimeoutException
            dup
            aload 0 /* this */
            iload 1 /* read */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getTimeoutMsg:(Z)Ljava/lang/String;
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        52: .line 1400
      StackMap locals: org.apache.tomcat.util.net.SocketWrapperBase$OperationState
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
        53: aload 15
            monitorexit
        54: areturn
        55: .line 1402
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
        56: .line 1403
            aload 11 /* handler */
            ifnull 58
            aload 14 /* state */
            getfield org.apache.tomcat.util.net.SocketWrapperBase$OperationState.callHandler:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_1
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 58
        57: .line 1404
            aload 11 /* handler */
            new java.net.SocketTimeoutException
            dup
            aload 0 /* this */
            iload 1 /* read */
            invokevirtual org.apache.tomcat.util.net.SocketWrapperBase.getTimeoutMsg:(Z)Ljava/lang/String;
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            aload 9 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
        58: .line 1406
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SocketWrapperBase$CompletionState.ERROR:Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionState;
            aload 15
            monitorexit
        59: areturn
        60: .line 1392
      StackMap locals:
      StackMap stack:
            aload 15
            monitorexit
        61: goto 64
      StackMap locals:
      StackMap stack: java.lang.Throwable
        62: aload 15
            monitorexit
        63: athrow
        64: .line 1411
      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   65     0        this  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>;
            0   65     1        read  Z
            0   65     2     buffers  [Ljava/nio/ByteBuffer;
            0   65     3      offset  I
            0   65     4      length  I
            0   65     5       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0   65     6     timeout  J
            0   65     8        unit  Ljava/util/concurrent/TimeUnit;
            0   65     9  attachment  TA;
            0   65    10       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0   65    11     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            1   65    12         ioe  Ljava/io/IOException;
           24   26    13           e  Ljava/lang/InterruptedException;
           35   65    13  completion  Lorg/apache/tomcat/util/net/SocketWrapperBase<TE;>.VectoredIOCompletionHandler<TA;>;
           40   65    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    53      55  Class java.lang.InterruptedException
          47    54      62  any
          55    59      62  any
          60    61      62  any
          62    63      62  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     

  private java.lang.String getTimeoutMsg(boolean);
    descriptor: (Z)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SocketWrapperBase this
        start local 1 // boolean read
         0: .line 1416
            iload 1 /* read */
            ifeq 2
         1: .line 1417
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "socketWrapper.readTimeout"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         2: .line 1419
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SocketWrapperBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "socketWrapper.writeTimeout"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // boolean read
        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  read  Z
    MethodParameters:
      Name  Flags
      read  

  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 1434
            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 1435
            iload 4 /* max */
            ifle 3
         2: .line 1436
            aload 3 /* to */
            aload 0 /* from */
            iload 1 /* offset */
            iload 4 /* max */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         3: .line 1438
      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 1442
            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 1443
            iload 2 /* max */
            ifle 6
         2: .line 1444
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 3 /* fromLimit */
        start local 3 // int fromLimit
         3: .line 1445
            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 1446
            aload 1 /* to */
            aload 0 /* from */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         5: .line 1447
            aload 0 /* from */
            iload 3 /* fromLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 3 // int fromLimit
         6: .line 1449
      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    

  protected static boolean buffersArrayHasRemaining(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.nio.ByteBuffer[] buffers
        start local 1 // int offset
        start local 2 // int length
         0: .line 1453
            iload 1 /* offset */
            istore 3 /* pos */
        start local 3 // int pos
         1: goto 5
         2: .line 1454
      StackMap locals: int
      StackMap stack:
            aload 0 /* buffers */
            iload 3 /* pos */
            aaload
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 4
         3: .line 1455
            iconst_1
            ireturn
         4: .line 1453
      StackMap locals:
      StackMap stack:
            iinc 3 /* pos */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* pos */
            iload 1 /* offset */
            iload 2 /* length */
            iadd
            if_icmplt 2
        end local 3 // int pos
         6: .line 1458
            iconst_0
            ireturn
        end local 2 // int length
        end local 1 // int offset
        end local 0 // java.nio.ByteBuffer[] buffers
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  buffers  [Ljava/nio/ByteBuffer;
            0    7     1   offset  I
            0    7     2   length  I
            1    6     3      pos  I
    MethodParameters:
         Name  Flags
      buffers  
      offset   
      length   
}
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 abstract Handler = org.apache.tomcat.util.net.AbstractEndpoint$Handler of org.apache.tomcat.util.net.AbstractEndpoint
  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