public class org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper extends org.apache.tomcat.util.net.SocketWrapperBase<org.apache.tomcat.util.net.NioChannel>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper
  super_class: org.apache.tomcat.util.net.SocketWrapperBase
{
  private final org.apache.tomcat.util.collections.SynchronizedStack<org.apache.tomcat.util.net.NioChannel> nioChannels;
    descriptor: Lorg/apache/tomcat/util/collections/SynchronizedStack;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/tomcat/util/collections/SynchronizedStack<Lorg/apache/tomcat/util/net/NioChannel;>;

  private final org.apache.tomcat.util.net.NioEndpoint$Poller poller;
    descriptor: Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private volatile org.apache.tomcat.util.net.NioEndpoint$SendfileData sendfileData;
    descriptor: Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

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

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

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

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

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

  public void <init>(org.apache.tomcat.util.net.NioChannel, org.apache.tomcat.util.net.NioEndpoint);
    descriptor: (Lorg/apache/tomcat/util/net/NioChannel;Lorg/apache/tomcat/util/net/NioEndpoint;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // org.apache.tomcat.util.net.NioChannel channel
        start local 2 // org.apache.tomcat.util.net.NioEndpoint endpoint
         0: .line 986
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* endpoint */
            invokespecial org.apache.tomcat.util.net.SocketWrapperBase.<init>:(Ljava/lang/Object;Lorg/apache/tomcat/util/net/AbstractEndpoint;)V
         1: .line 975
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.interestOps:I
         2: .line 976
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sendfileData:Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
         3: .line 977
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastRead:J
         4: .line 978
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastRead:J
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastWrite:J
         5: .line 981
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readBlocking:Z
         6: .line 983
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeBlocking:Z
         7: .line 987
            aload 0 /* this */
            aload 2 /* endpoint */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getNioChannels:()Lorg/apache/tomcat/util/collections/SynchronizedStack;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nioChannels:Lorg/apache/tomcat/util/collections/SynchronizedStack;
         8: .line 988
            aload 0 /* this */
            aload 2 /* endpoint */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getPoller:()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.poller:Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
         9: .line 989
            aload 0 /* this */
            aload 1 /* channel */
            invokevirtual org.apache.tomcat.util.net.NioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        10: .line 990
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readPending:Ljava/util/concurrent/Semaphore;
            ifnonnull 11
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            goto 12
      StackMap locals: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper org.apache.tomcat.util.net.NioChannel org.apache.tomcat.util.net.NioEndpoint
      StackMap stack: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper
        11: aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readPending:Ljava/util/concurrent/Semaphore;
      StackMap locals: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper org.apache.tomcat.util.net.NioChannel org.apache.tomcat.util.net.NioEndpoint
      StackMap stack: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper java.lang.Object
        12: putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readLock:Ljava/lang/Object;
        13: .line 991
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writePending:Ljava/util/concurrent/Semaphore;
            ifnonnull 14
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            goto 15
      StackMap locals:
      StackMap stack: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper
        14: aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writePending:Ljava/util/concurrent/Semaphore;
      StackMap locals: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper org.apache.tomcat.util.net.NioChannel org.apache.tomcat.util.net.NioEndpoint
      StackMap stack: org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper java.lang.Object
        15: putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeLock:Ljava/lang/Object;
        16: .line 992
            return
        end local 2 // org.apache.tomcat.util.net.NioEndpoint endpoint
        end local 1 // org.apache.tomcat.util.net.NioChannel channel
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0   17     1   channel  Lorg/apache/tomcat/util/net/NioChannel;
            0   17     2  endpoint  Lorg/apache/tomcat/util/net/NioEndpoint;
    MethodParameters:
          Name  Flags
      channel   
      endpoint  

  public org.apache.tomcat.util.net.NioEndpoint$Poller getPoller();
    descriptor: ()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 994
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.poller:Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            areturn
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public int interestOps();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 995
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.interestOps:I
            ireturn
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public int interestOps(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // int ops
         0: .line 996
            aload 0 /* this */
            iload 1 /* ops */
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.interestOps:I
            iload 1 /* ops */
            ireturn
        end local 1 // int ops
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    1     1   ops  I
    MethodParameters:
      Name  Flags
      ops   

  public void setSendfileData(org.apache.tomcat.util.net.NioEndpoint$SendfileData);
    descriptor: (Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // org.apache.tomcat.util.net.NioEndpoint$SendfileData sf
         0: .line 998
            aload 0 /* this */
            aload 1 /* sf */
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sendfileData:Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
            return
        end local 1 // org.apache.tomcat.util.net.NioEndpoint$SendfileData sf
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    1     1    sf  Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
    MethodParameters:
      Name  Flags
      sf    

  public org.apache.tomcat.util.net.NioEndpoint$SendfileData getSendfileData();
    descriptor: ()Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 999
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sendfileData:Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
            areturn
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public void updateLastWrite();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1001
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastWrite:J
            return
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public long getLastWrite();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1002
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastWrite:J
            lreturn
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public void updateLastRead();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1003
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastRead:J
            return
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public long getLastRead();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1004
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.lastRead:J
            lreturn
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public boolean isReadyForRead();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1008
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForRead:()V
         1: .line 1010
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 3
         2: .line 1011
            iconst_1
            ireturn
         3: .line 1014
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer:(Z)I
            pop
         4: .line 1016
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: istore 1 /* isReady */
        start local 1 // boolean isReady
         7: .line 1017
            iload 1 /* isReady */
            ireturn
        end local 1 // boolean isReady
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            7    8     1  isReady  Z
    Exceptions:
      throws java.io.IOException

  public int read(boolean, byte[], int, int);
    descriptor: (Z[BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // boolean block
        start local 2 // byte[] b
        start local 3 // int off
        start local 4 // int len
         0: .line 1023
            aload 0 /* this */
            aload 2 /* b */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.populateReadBuffer:([BII)I
            istore 5 /* nRead */
        start local 5 // int nRead
         1: .line 1024
            iload 5 /* nRead */
            ifle 3
         2: .line 1025
            iload 5 /* nRead */
            ireturn
         3: .line 1036
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 1 /* block */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer:(Z)I
            istore 5 /* nRead */
         4: .line 1037
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.updateLastRead:()V
         5: .line 1041
            iload 5 /* nRead */
            ifle 9
         6: .line 1042
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForRead:()V
         7: .line 1043
            iload 5 /* nRead */
            iload 4 /* len */
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* nRead */
         8: .line 1044
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            aload 2 /* b */
            iload 3 /* off */
            iload 5 /* nRead */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         9: .line 1046
      StackMap locals:
      StackMap stack:
            iload 5 /* nRead */
            ireturn
        end local 5 // int nRead
        end local 4 // int len
        end local 3 // int off
        end local 2 // byte[] b
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0   10     1  block  Z
            0   10     2      b  [B
            0   10     3    off  I
            0   10     4    len  I
            1   10     5  nRead  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      b      
      off    
      len    

  public int read(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // boolean block
        start local 2 // java.nio.ByteBuffer to
         0: .line 1052
            aload 0 /* this */
            aload 2 /* to */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.populateReadBuffer:(Ljava/nio/ByteBuffer;)I
            istore 3 /* nRead */
        start local 3 // int nRead
         1: .line 1053
            iload 3 /* nRead */
            ifle 3
         2: .line 1054
            iload 3 /* nRead */
            ireturn
         3: .line 1065
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.capacity:()I
            istore 4 /* limit */
        start local 4 // int limit
         4: .line 1066
            aload 2 /* to */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 4 /* limit */
            if_icmplt 11
         5: .line 1067
            aload 2 /* to */
            aload 2 /* to */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 4 /* limit */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         6: .line 1068
            aload 0 /* this */
            iload 1 /* block */
            aload 2 /* to */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer:(ZLjava/nio/ByteBuffer;)I
            istore 3 /* nRead */
         7: .line 1069
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 9
         8: .line 1070
            getstatic org.apache.tomcat.util.net.NioEndpoint.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 direct from socket: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* 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
         9: .line 1072
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.updateLastRead:()V
        10: .line 1073
            goto 17
        11: .line 1075
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* block */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer:(Z)I
            istore 3 /* nRead */
        12: .line 1076
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 14
        13: .line 1077
            getstatic org.apache.tomcat.util.net.NioEndpoint.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 into buffer: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* 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
        14: .line 1079
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.updateLastRead:()V
        15: .line 1083
            iload 3 /* nRead */
            ifle 17
        16: .line 1084
            aload 0 /* this */
            aload 2 /* to */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.populateReadBuffer:(Ljava/nio/ByteBuffer;)I
            istore 3 /* nRead */
        17: .line 1087
      StackMap locals:
      StackMap stack:
            iload 3 /* nRead */
            ireturn
        end local 4 // int limit
        end local 3 // int nRead
        end local 2 // java.nio.ByteBuffer to
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0   18     1  block  Z
            0   18     2     to  Ljava/nio/ByteBuffer;
            1   18     3  nRead  I
            4   18     4  limit  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  
      to     

  protected void doClose();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1093
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 1094
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Calling ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "].closeSocket(["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)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
         2: .line 1097
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            getfield org.apache.tomcat.util.net.AbstractEndpoint.connections:Ljava/util/Map;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 1098
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.isOpen:()Z
            ifeq 5
         4: .line 1099
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            iconst_1
            invokevirtual org.apache.tomcat.util.net.NioChannel.close:(Z)V
         5: .line 1101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            getfield org.apache.tomcat.util.net.AbstractEndpoint.running:Z
            ifeq 21
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            getfield org.apache.tomcat.util.net.AbstractEndpoint.paused:Z
            ifne 21
         6: .line 1102
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nioChannels:Lorg/apache/tomcat/util/collections/SynchronizedStack;
            ifnull 7
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nioChannels:Lorg/apache/tomcat/util/collections/SynchronizedStack;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.collections.SynchronizedStack.push:(Ljava/lang/Object;)Z
            ifne 21
         7: .line 1103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.free:()V
         8: .line 1106
            goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 1 /* e */
        start local 1 // java.lang.Throwable e
        10: .line 1107
            aload 1 /* e */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        11: .line 1108
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 13
        12: .line 1109
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "endpoint.debug.channelCloseFail"
            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
        13: .line 1112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.SocketBufferHandler.EMPTY:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        14: .line 1113
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.clear:()V
        15: .line 1114
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.NioChannel.CLOSED_NIO_CHANNEL:Lorg/apache/tomcat/util/net/NioChannel;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.reset:(Ljava/lang/Object;)V
            goto 24
        16: .line 1111
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
        17: .line 1112
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.SocketBufferHandler.EMPTY:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        18: .line 1113
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.clear:()V
        19: .line 1114
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.NioChannel.CLOSED_NIO_CHANNEL:Lorg/apache/tomcat/util/net/NioChannel;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.reset:(Ljava/lang/Object;)V
        20: .line 1115
            aload 2
            athrow
        21: .line 1112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.SocketBufferHandler.EMPTY:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
        22: .line 1113
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.nonBlockingWriteBuffer:Lorg/apache/tomcat/util/net/WriteBuffer;
            invokevirtual org.apache.tomcat.util.net.WriteBuffer.clear:()V
        23: .line 1114
            aload 0 /* this */
            getstatic org.apache.tomcat.util.net.NioChannel.CLOSED_NIO_CHANNEL:Lorg/apache/tomcat/util/net/NioChannel;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.reset:(Ljava/lang/Object;)V
        24: .line 1117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSendfileData:()Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
            astore 1 /* data */
        start local 1 // org.apache.tomcat.util.net.NioEndpoint$SendfileData data
        25: .line 1118
            aload 1 /* data */
            ifnull 32
            aload 1 /* data */
            getfield org.apache.tomcat.util.net.NioEndpoint$SendfileData.fchannel:Ljava/nio/channels/FileChannel;
            ifnull 32
            aload 1 /* data */
            getfield org.apache.tomcat.util.net.NioEndpoint$SendfileData.fchannel:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.isOpen:()Z
            ifeq 32
        26: .line 1119
            aload 1 /* data */
            getfield org.apache.tomcat.util.net.NioEndpoint$SendfileData.fchannel:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.close:()V
        end local 1 // org.apache.tomcat.util.net.NioEndpoint$SendfileData data
        27: .line 1121
            goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 1 /* e */
        start local 1 // java.lang.Throwable e
        29: .line 1122
            aload 1 /* e */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        30: .line 1123
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 32
        31: .line 1124
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "endpoint.sendfile.closeError"
            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
        32: .line 1127
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   33     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
           10   13     1     e  Ljava/lang/Throwable;
           25   27     1  data  Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;
           29   32     1     e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     8       9  Class java.lang.Throwable
           2    13      16  any
          24    27      28  Class java.lang.Throwable

  private int fillReadBuffer(boolean);
    descriptor: (Z)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // boolean block
         0: .line 1130
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
         1: .line 1131
            aload 0 /* this */
            iload 1 /* block */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.socketBufferHandler:Lorg/apache/tomcat/util/net/SocketBufferHandler;
            invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer:(ZLjava/nio/ByteBuffer;)I
            ireturn
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    2     1  block  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

  private int fillReadBuffer(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // boolean block
        start local 2 // java.nio.ByteBuffer buffer
         0: .line 1136
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         1: .line 1137
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            getstatic org.apache.tomcat.util.net.NioChannel.CLOSED_NIO_CHANNEL:Lorg/apache/tomcat/util/net/NioChannel;
            if_acmpne 3
         2: .line 1138
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 1140
      StackMap locals: int
      StackMap stack:
            iload 1 /* block */
            ifeq 35
         4: .line 1141
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getReadTimeout:()J
            lstore 4 /* timeout */
        start local 4 // long timeout
         5: .line 1142
            lconst_0
            lstore 6 /* startNanos */
        start local 6 // long startNanos
         6: .line 1144
      StackMap locals: long long
      StackMap stack:
            lload 6 /* startNanos */
            lconst_0
            lcmp
            ifle 13
         7: .line 1145
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic java.lang.System.nanoTime:()J
            lload 6 /* startNanos */
            lsub
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lstore 8 /* elapsedMillis */
        start local 8 // long elapsedMillis
         8: .line 1146
            lload 8 /* elapsedMillis */
            lconst_0
            lcmp
            ifne 10
         9: .line 1147
            lconst_1
            lstore 8 /* elapsedMillis */
        10: .line 1149
      StackMap locals: long
      StackMap stack:
            lload 4 /* timeout */
            lload 8 /* elapsedMillis */
            lsub
            lstore 4 /* timeout */
        11: .line 1150
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifgt 13
        12: .line 1151
            new java.net.SocketTimeoutException
            dup
            invokespecial java.net.SocketTimeoutException.<init>:()V
            athrow
        end local 8 // long elapsedMillis
        13: .line 1154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            aload 2 /* buffer */
            invokevirtual org.apache.tomcat.util.net.NioChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 3 /* n */
        14: .line 1155
            iload 3 /* n */
            iconst_m1
            if_icmpne 16
        15: .line 1156
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
        16: .line 1157
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifne 33
        17: .line 1158
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readBlocking:Z
        18: .line 1159
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.registerReadInterest:()V
        19: .line 1160
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        20: .line 1161
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readBlocking:Z
            ifeq 29
        21: .line 1163
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 25
        22: .line 1164
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* startNanos */
        23: .line 1165
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readLock:Ljava/lang/Object;
            lload 4 /* timeout */
            invokevirtual java.lang.Object.wait:(J)V
        24: .line 1166
            goto 28
        25: .line 1167
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
        26: .line 1169
            goto 28
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        27: pop
        28: .line 1172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.readBlocking:Z
        29: .line 1160
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 8
            monitorexit
        32: athrow
        33: .line 1176
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifeq 6
        end local 6 // long startNanos
        end local 4 // long timeout
        34: .line 1177
            goto 38
        35: .line 1178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            aload 2 /* buffer */
            invokevirtual org.apache.tomcat.util.net.NioChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 3 /* n */
        36: .line 1179
            iload 3 /* n */
            iconst_m1
            if_icmpne 38
        37: .line 1180
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
        38: .line 1183
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ireturn
        end local 3 // int n
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   39     0           this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0   39     1          block  Z
            0   39     2         buffer  Ljava/nio/ByteBuffer;
            1   39     3              n  I
            5   34     4        timeout  J
            6   34     6     startNanos  J
            8   13     8  elapsedMillis  J
      Exception table:
        from    to  target  type
          21    26      27  Class java.lang.InterruptedException
          20    30      31  any
          31    32      31  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      block   
      buffer  

  protected void doWrite(boolean, java.nio.ByteBuffer);
    descriptor: (ZLjava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // boolean block
        start local 2 // java.nio.ByteBuffer buffer
         0: .line 1189
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         1: .line 1190
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            getstatic org.apache.tomcat.util.net.NioChannel.CLOSED_NIO_CHANNEL:Lorg/apache/tomcat/util/net/NioChannel;
            if_acmpne 3
         2: .line 1191
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 1193
      StackMap locals: int
      StackMap stack:
            iload 1 /* block */
            ifeq 38
         4: .line 1194
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getWriteTimeout:()J
            lstore 4 /* timeout */
        start local 4 // long timeout
         5: .line 1195
            lconst_0
            lstore 6 /* startNanos */
        start local 6 // long startNanos
         6: .line 1197
      StackMap locals: long long
      StackMap stack:
            lload 6 /* startNanos */
            lconst_0
            lcmp
            ifle 13
         7: .line 1198
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic java.lang.System.nanoTime:()J
            lload 6 /* startNanos */
            lsub
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lstore 8 /* elapsedMillis */
        start local 8 // long elapsedMillis
         8: .line 1199
            lload 8 /* elapsedMillis */
            lconst_0
            lcmp
            ifne 10
         9: .line 1200
            lconst_1
            lstore 8 /* elapsedMillis */
        10: .line 1202
      StackMap locals: long
      StackMap stack:
            lload 4 /* timeout */
            lload 8 /* elapsedMillis */
            lsub
            lstore 4 /* timeout */
        11: .line 1203
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifgt 13
        12: .line 1204
            new java.net.SocketTimeoutException
            dup
            invokespecial java.net.SocketTimeoutException.<init>:()V
            athrow
        end local 8 // long elapsedMillis
        13: .line 1207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            aload 2 /* buffer */
            invokevirtual org.apache.tomcat.util.net.NioChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 3 /* n */
        14: .line 1208
            iload 3 /* n */
            iconst_m1
            if_icmpne 16
        15: .line 1209
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
        16: .line 1210
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifne 33
        17: .line 1211
            aload 0 /* this */
            iconst_1
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeBlocking:Z
        18: .line 1212
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.registerWriteInterest:()V
        19: .line 1213
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        20: .line 1214
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeBlocking:Z
            ifeq 29
        21: .line 1216
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 25
        22: .line 1217
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* startNanos */
        23: .line 1218
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeLock:Ljava/lang/Object;
            lload 4 /* timeout */
            invokevirtual java.lang.Object.wait:(J)V
        24: .line 1219
            goto 28
        25: .line 1220
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
        26: .line 1222
            goto 28
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        27: pop
        28: .line 1225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.writeBlocking:Z
        29: .line 1213
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        30: goto 36
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 8
            monitorexit
        32: athrow
        33: .line 1228
      StackMap locals:
      StackMap stack:
            lload 6 /* startNanos */
            lconst_0
            lcmp
            ifle 36
        34: .line 1230
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getWriteTimeout:()J
            lstore 4 /* timeout */
        35: .line 1231
            lconst_0
            lstore 6 /* startNanos */
        36: .line 1233
      StackMap locals:
      StackMap stack:
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 6
        end local 6 // long startNanos
        end local 4 // long timeout
        37: .line 1238
            goto 42
        38: .line 1240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            aload 2 /* buffer */
            invokevirtual org.apache.tomcat.util.net.NioChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 3 /* n */
        39: .line 1241
            iload 3 /* n */
            iconst_m1
            if_icmpne 41
        40: .line 1242
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
        41: .line 1244
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifle 42
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 38
        42: .line 1246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.updateLastWrite:()V
        43: .line 1247
            return
        end local 3 // int n
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // boolean block
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   44     0           this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0   44     1          block  Z
            0   44     2         buffer  Ljava/nio/ByteBuffer;
            1   44     3              n  I
            5   37     4        timeout  J
            6   37     6     startNanos  J
            8   13     8  elapsedMillis  J
      Exception table:
        from    to  target  type
          21    26      27  Class java.lang.InterruptedException
          20    30      31  any
          31    32      31  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      block   
      buffer  

  public void registerReadInterest();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1252
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 1253
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "endpoint.debug.registerRead"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         2: .line 1255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getPoller:()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$Poller.add:(Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;I)V
         3: .line 1256
            return
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public void registerWriteInterest();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1261
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 1262
            getstatic org.apache.tomcat.util.net.NioEndpoint.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "endpoint.debug.registerWrite"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         2: .line 1264
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getPoller:()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            aload 0 /* this */
            iconst_4
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$Poller.add:(Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;I)V
         3: .line 1265
            return
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;

  public org.apache.tomcat.util.net.SendfileDataBase createSendfileData(java.lang.String, long, long);
    descriptor: (Ljava/lang/String;JJ)Lorg/apache/tomcat/util/net/SendfileDataBase;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // java.lang.String filename
        start local 2 // long pos
        start local 4 // long length
         0: .line 1270
            new org.apache.tomcat.util.net.NioEndpoint$SendfileData
            dup
            aload 1 /* filename */
            lload 2 /* pos */
            lload 4 /* length */
            invokespecial org.apache.tomcat.util.net.NioEndpoint$SendfileData.<init>:(Ljava/lang/String;JJ)V
            areturn
        end local 4 // long length
        end local 2 // long pos
        end local 1 // java.lang.String filename
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    1     1  filename  Ljava/lang/String;
            0    1     2       pos  J
            0    1     4    length  J
    MethodParameters:
          Name  Flags
      filename  
      pos       
      length    

  public 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: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // org.apache.tomcat.util.net.SendfileDataBase sendfileData
         0: .line 1276
            aload 0 /* this */
            aload 1 /* sendfileData */
            checkcast org.apache.tomcat.util.net.NioEndpoint$SendfileData
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.setSendfileData:(Lorg/apache/tomcat/util/net/NioEndpoint$SendfileData;)V
         1: .line 1277
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getPoller:()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$Poller.getSelector:()Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.SocketChannel.keyFor:(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;
            astore 2 /* key */
        start local 2 // java.nio.channels.SelectionKey key
         2: .line 1279
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getPoller:()Lorg/apache/tomcat/util/net/NioEndpoint$Poller;
            aload 2 /* key */
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$Poller.processSendfile:(Ljava/nio/channels/SelectionKey;Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;Z)Lorg/apache/tomcat/util/net/SendfileState;
            areturn
        end local 2 // java.nio.channels.SelectionKey key
        end local 1 // org.apache.tomcat.util.net.SendfileDataBase sendfileData
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    3     1  sendfileData  Lorg/apache/tomcat/util/net/SendfileDataBase;
            2    3     2           key  Ljava/nio/channels/SelectionKey;
    MethodParameters:
              Name  Flags
      sendfileData  

  protected void populateRemoteAddr();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1285
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1286
            aload 1 /* sc */
            ifnull 5
         2: .line 1287
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getInetAddress:()Ljava/net/InetAddress;
            astore 2 /* inetAddr */
        start local 2 // java.net.InetAddress inetAddr
         3: .line 1288
            aload 2 /* inetAddr */
            ifnull 5
         4: .line 1289
            aload 0 /* this */
            aload 2 /* inetAddr */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.remoteAddr:Ljava/lang/String;
        end local 2 // java.net.InetAddress inetAddr
         5: .line 1292
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    6     1        sc  Ljava/nio/channels/SocketChannel;
            3    5     2  inetAddr  Ljava/net/InetAddress;

  protected void populateRemoteHost();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1297
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1298
            aload 1 /* sc */
            ifnull 7
         2: .line 1299
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getInetAddress:()Ljava/net/InetAddress;
            astore 2 /* inetAddr */
        start local 2 // java.net.InetAddress inetAddr
         3: .line 1300
            aload 2 /* inetAddr */
            ifnull 7
         4: .line 1301
            aload 0 /* this */
            aload 2 /* inetAddr */
            invokevirtual java.net.InetAddress.getHostName:()Ljava/lang/String;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.remoteHost:Ljava/lang/String;
         5: .line 1302
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.remoteAddr:Ljava/lang/String;
            ifnonnull 7
         6: .line 1303
            aload 0 /* this */
            aload 2 /* inetAddr */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.remoteAddr:Ljava/lang/String;
        end local 2 // java.net.InetAddress inetAddr
         7: .line 1307
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    8     1        sc  Ljava/nio/channels/SocketChannel;
            3    7     2  inetAddr  Ljava/net/InetAddress;

  protected void populateRemotePort();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1312
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1313
            aload 1 /* sc */
            ifnull 3
         2: .line 1314
            aload 0 /* this */
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getPort:()I
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.remotePort:I
         3: .line 1316
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    4     1    sc  Ljava/nio/channels/SocketChannel;

  protected void populateLocalName();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1321
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1322
            aload 1 /* sc */
            ifnull 5
         2: .line 1323
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getLocalAddress:()Ljava/net/InetAddress;
            astore 2 /* inetAddr */
        start local 2 // java.net.InetAddress inetAddr
         3: .line 1324
            aload 2 /* inetAddr */
            ifnull 5
         4: .line 1325
            aload 0 /* this */
            aload 2 /* inetAddr */
            invokevirtual java.net.InetAddress.getHostName:()Ljava/lang/String;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.localName:Ljava/lang/String;
        end local 2 // java.net.InetAddress inetAddr
         5: .line 1328
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    6     1        sc  Ljava/nio/channels/SocketChannel;
            3    5     2  inetAddr  Ljava/net/InetAddress;

  protected void populateLocalAddr();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1333
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1334
            aload 1 /* sc */
            ifnull 5
         2: .line 1335
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getLocalAddress:()Ljava/net/InetAddress;
            astore 2 /* inetAddr */
        start local 2 // java.net.InetAddress inetAddr
         3: .line 1336
            aload 2 /* inetAddr */
            ifnull 5
         4: .line 1337
            aload 0 /* this */
            aload 2 /* inetAddr */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.localAddr:Ljava/lang/String;
        end local 2 // java.net.InetAddress inetAddr
         5: .line 1340
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    6     1        sc  Ljava/nio/channels/SocketChannel;
            3    5     2  inetAddr  Ljava/net/InetAddress;

  protected void populateLocalPort();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
         0: .line 1345
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            invokevirtual org.apache.tomcat.util.net.NioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* sc */
        start local 1 // java.nio.channels.SocketChannel sc
         1: .line 1346
            aload 1 /* sc */
            ifnull 3
         2: .line 1347
            aload 0 /* this */
            aload 1 /* sc */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getLocalPort:()I
            putfield org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.localPort:I
         3: .line 1349
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
            return
        end local 1 // java.nio.channels.SocketChannel sc
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            1    4     1    sc  Ljava/nio/channels/SocketChannel;

  public org.apache.tomcat.util.net.SSLSupport getSslSupport(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/tomcat/util/net/SSLSupport;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // java.lang.String clientCertProvider
         0: .line 1358
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            instanceof org.apache.tomcat.util.net.SecureNioChannel
            ifeq 6
         1: .line 1359
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.SecureNioChannel
            astore 2 /* ch */
        start local 2 // org.apache.tomcat.util.net.SecureNioChannel ch
         2: .line 1360
            aload 2 /* ch */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getSslEngine:()Ljavax/net/ssl/SSLEngine;
            astore 3 /* sslEngine */
        start local 3 // javax.net.ssl.SSLEngine sslEngine
         3: .line 1361
            aload 3 /* sslEngine */
            ifnull 6
         4: .line 1362
            aload 3 /* sslEngine */
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            astore 4 /* session */
        start local 4 // javax.net.ssl.SSLSession session
         5: .line 1363
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            checkcast org.apache.tomcat.util.net.NioEndpoint
            invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSslImplementation:()Lorg/apache/tomcat/util/net/SSLImplementation;
            aload 4 /* session */
            invokevirtual org.apache.tomcat.util.net.SSLImplementation.getSSLSupport:(Ljavax/net/ssl/SSLSession;)Lorg/apache/tomcat/util/net/SSLSupport;
            areturn
        end local 4 // javax.net.ssl.SSLSession session
        end local 3 // javax.net.ssl.SSLEngine sslEngine
        end local 2 // org.apache.tomcat.util.net.SecureNioChannel ch
         6: .line 1366
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String clientCertProvider
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0                this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    7     1  clientCertProvider  Ljava/lang/String;
            2    6     2                  ch  Lorg/apache/tomcat/util/net/SecureNioChannel;
            3    6     3           sslEngine  Ljavax/net/ssl/SSLEngine;
            5    6     4             session  Ljavax/net/ssl/SSLSession;
    MethodParameters:
                    Name  Flags
      clientCertProvider  

  public void doClientAuth(org.apache.tomcat.util.net.SSLSupport);
    descriptor: (Lorg/apache/tomcat/util/net/SSLSupport;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // org.apache.tomcat.util.net.SSLSupport sslSupport
         0: .line 1372
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.SecureNioChannel
            astore 2 /* sslChannel */
        start local 2 // org.apache.tomcat.util.net.SecureNioChannel sslChannel
         1: .line 1373
            aload 2 /* sslChannel */
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getSslEngine:()Ljavax/net/ssl/SSLEngine;
            astore 3 /* engine */
        start local 3 // javax.net.ssl.SSLEngine engine
         2: .line 1374
            aload 3 /* engine */
            invokevirtual javax.net.ssl.SSLEngine.getNeedClientAuth:()Z
            ifne 6
         3: .line 1376
            aload 3 /* engine */
            iconst_1
            invokevirtual javax.net.ssl.SSLEngine.setNeedClientAuth:(Z)V
         4: .line 1377
            aload 2 /* sslChannel */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getEndpoint:()Lorg/apache/tomcat/util/net/AbstractEndpoint;
            invokevirtual org.apache.tomcat.util.net.AbstractEndpoint.getConnectionTimeout:()I
            i2l
            invokevirtual org.apache.tomcat.util.net.SecureNioChannel.rehandshake:(J)V
         5: .line 1378
            aload 1 /* sslSupport */
            checkcast org.apache.tomcat.util.net.jsse.JSSESupport
            aload 3 /* engine */
            invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
            invokevirtual org.apache.tomcat.util.net.jsse.JSSESupport.setSession:(Ljavax/net/ssl/SSLSession;)V
         6: .line 1380
      StackMap locals: org.apache.tomcat.util.net.SecureNioChannel javax.net.ssl.SSLEngine
      StackMap stack:
            return
        end local 3 // javax.net.ssl.SSLEngine engine
        end local 2 // org.apache.tomcat.util.net.SecureNioChannel sslChannel
        end local 1 // org.apache.tomcat.util.net.SSLSupport sslSupport
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    7     1  sslSupport  Lorg/apache/tomcat/util/net/SSLSupport;
            1    7     2  sslChannel  Lorg/apache/tomcat/util/net/SecureNioChannel;
            2    7     3      engine  Ljavax/net/ssl/SSLEngine;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      sslSupport  

  public void setAppReadBufHandler(org.apache.tomcat.util.net.ApplicationBufferHandler);
    descriptor: (Lorg/apache/tomcat/util/net/ApplicationBufferHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
        start local 1 // org.apache.tomcat.util.net.ApplicationBufferHandler handler
         0: .line 1385
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSocket:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.NioChannel
            aload 1 /* handler */
            invokevirtual org.apache.tomcat.util.net.NioChannel.setAppReadBufHandler:(Lorg/apache/tomcat/util/net/ApplicationBufferHandler;)V
         1: .line 1386
            return
        end local 1 // org.apache.tomcat.util.net.ApplicationBufferHandler handler
        end local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    2     1  handler  Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
    MethodParameters:
         Name  Flags
      handler  

  protected <A> org.apache.tomcat.util.net.SocketWrapperBase<org.apache.tomcat.util.net.NioChannel>.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<org.apache.tomcat.util.net.NioChannel>.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: (0x0004) ACC_PROTECTED
    Code:
      stack=16, locals=14, args_size=13
        start local 0 // org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper 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
        start local 12 // java.util.concurrent.Semaphore semaphore
        start local 13 // org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler completion
         0: .line 1394
            new org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState
            dup
            aload 0 /* this */
            iload 1 /* read */
            aload 2 /* buffers */
            iload 3 /* offset */
            iload 4 /* length */
            aload 5 /* block */
         1: .line 1395
            lload 6 /* timeout */
            aload 8 /* unit */
            aload 9 /* attachment */
            aload 10 /* check */
            aload 11 /* handler */
            aload 12 /* semaphore */
            aload 13 /* completion */
         2: .line 1394
            invokespecial org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.<init>:(Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;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;)V
            areturn
        end local 13 // org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler completion
        end local 12 // java.util.concurrent.Semaphore semaphore
        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.NioEndpoint$NioSocketWrapper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
            0    3     1        read  Z
            0    3     2     buffers  [Ljava/nio/ByteBuffer;
            0    3     3      offset  I
            0    3     4      length  I
            0    3     5       block  Lorg/apache/tomcat/util/net/SocketWrapperBase$BlockingMode;
            0    3     6     timeout  J
            0    3     8        unit  Ljava/util/concurrent/TimeUnit;
            0    3     9  attachment  TA;
            0    3    10       check  Lorg/apache/tomcat/util/net/SocketWrapperBase$CompletionCheck;
            0    3    11     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Long;-TA;>;
            0    3    12   semaphore  Ljava/util/concurrent/Semaphore;
            0    3    13  completion  Lorg/apache/tomcat/util/net/SocketWrapperBase<Lorg/apache/tomcat/util/net/NioChannel;>.VectoredIOCompletionHandler<TA;>;
    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<Lorg/apache/tomcat/util/net/NioChannel;>.VectoredIOCompletionHandler<TA;>;)Lorg/apache/tomcat/util/net/SocketWrapperBase<Lorg/apache/tomcat/util/net/NioChannel;>.OperationState<TA;>;
    MethodParameters:
            Name  Flags
      read        
      buffers     
      offset      
      length      
      block       
      timeout     
      unit        
      attachment  
      check       
      handler     
      semaphore   
      completion  
}
Signature: Lorg/apache/tomcat/util/net/SocketWrapperBase<Lorg/apache/tomcat/util/net/NioChannel;>;
SourceFile: "NioEndpoint.java"
NestHost: org.apache.tomcat.util.net.NioEndpoint
InnerClasses:
  public NioSocketWrapper = org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper of org.apache.tomcat.util.net.NioEndpoint
  private NioOperationState = org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState of org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper
  public Poller = org.apache.tomcat.util.net.NioEndpoint$Poller of org.apache.tomcat.util.net.NioEndpoint
  public SendfileData = org.apache.tomcat.util.net.NioEndpoint$SendfileData of org.apache.tomcat.util.net.NioEndpoint
  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
  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