public class io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe extends io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe
  super_class: io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe
{
  final io.netty.channel.nio.AbstractNioByteChannel this$0;
    descriptor: Lio/netty/channel/nio/AbstractNioByteChannel;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  protected void <init>(io.netty.channel.nio.AbstractNioByteChannel);
    descriptor: (Lio/netty/channel/nio/AbstractNioByteChannel;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
         0: .line 97
            aload 0 /* this */
            aload 1
            putfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            aload 0 /* this */
            aload 1
            invokespecial io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.<init>:(Lio/netty/channel/nio/AbstractNioChannel;)V
            return
        end local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe;
    MethodParameters:
        Name  Flags
      this$0  final

  private void closeOnRead(io.netty.channel.ChannelPipeline);
    descriptor: (Lio/netty/channel/ChannelPipeline;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
        start local 1 // io.netty.channel.ChannelPipeline pipeline
         0: .line 100
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.isInputShutdown0:()Z
            ifne 7
         1: .line 101
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.config:()Lio/netty/channel/ChannelConfig;
            invokestatic io.netty.channel.nio.AbstractNioByteChannel.isAllowHalfClosure:(Lio/netty/channel/ChannelConfig;)Z
            ifeq 5
         2: .line 102
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.shutdownInput:()Lio/netty/channel/ChannelFuture;
            pop
         3: .line 103
            aload 1 /* pipeline */
            getstatic io.netty.channel.socket.ChannelInputShutdownEvent.INSTANCE:Lio/netty/channel/socket/ChannelInputShutdownEvent;
            invokeinterface io.netty.channel.ChannelPipeline.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 104
            goto 9
         5: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.voidPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.close:(Lio/netty/channel/ChannelPromise;)V
         6: .line 107
            goto 9
         7: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            iconst_1
            putfield io.netty.channel.nio.AbstractNioByteChannel.inputClosedSeenErrorOnRead:Z
         8: .line 109
            aload 1 /* pipeline */
            getstatic io.netty.channel.socket.ChannelInputShutdownReadComplete.INSTANCE:Lio/netty/channel/socket/ChannelInputShutdownReadComplete;
            invokeinterface io.netty.channel.ChannelPipeline.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
         9: .line 111
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelPipeline pipeline
        end local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lio/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe;
            0   10     1  pipeline  Lio/netty/channel/ChannelPipeline;
    MethodParameters:
          Name  Flags
      pipeline  

  private void handleReadException(io.netty.channel.ChannelPipeline, io.netty.buffer.ByteBuf, java.lang.Throwable, boolean, io.netty.channel.RecvByteBufAllocator$Handle);
    descriptor: (Lio/netty/channel/ChannelPipeline;Lio/netty/buffer/ByteBuf;Ljava/lang/Throwable;ZLio/netty/channel/RecvByteBufAllocator$Handle;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
        start local 1 // io.netty.channel.ChannelPipeline pipeline
        start local 2 // io.netty.buffer.ByteBuf byteBuf
        start local 3 // java.lang.Throwable cause
        start local 4 // boolean close
        start local 5 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
         0: .line 115
            aload 2 /* byteBuf */
            ifnull 6
         1: .line 116
            aload 2 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifeq 5
         2: .line 117
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            iconst_0
            putfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
         3: .line 118
            aload 1 /* pipeline */
            aload 2 /* byteBuf */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 119
            goto 6
         5: .line 120
      StackMap locals:
      StackMap stack:
            aload 2 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
         6: .line 123
      StackMap locals:
      StackMap stack:
            aload 5 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.readComplete:()V
         7: .line 124
            aload 1 /* pipeline */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelReadComplete:()Lio/netty/channel/ChannelPipeline;
            pop
         8: .line 125
            aload 1 /* pipeline */
            aload 3 /* cause */
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
         9: .line 126
            iload 4 /* close */
            ifne 10
            aload 3 /* cause */
            instanceof java.io.IOException
            ifeq 11
        10: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* pipeline */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.closeOnRead:(Lio/netty/channel/ChannelPipeline;)V
        11: .line 129
      StackMap locals:
      StackMap stack:
            return
        end local 5 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
        end local 4 // boolean close
        end local 3 // java.lang.Throwable cause
        end local 2 // io.netty.buffer.ByteBuf byteBuf
        end local 1 // io.netty.channel.ChannelPipeline pipeline
        end local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lio/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe;
            0   12     1     pipeline  Lio/netty/channel/ChannelPipeline;
            0   12     2      byteBuf  Lio/netty/buffer/ByteBuf;
            0   12     3        cause  Ljava/lang/Throwable;
            0   12     4        close  Z
            0   12     5  allocHandle  Lio/netty/channel/RecvByteBufAllocator$Handle;
    MethodParameters:
             Name  Flags
      pipeline     
      byteBuf      
      cause        
      close        
      allocHandle  

  public final void read();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=6, locals=9, args_size=1
        start local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
         0: .line 133
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.config:()Lio/netty/channel/ChannelConfig;
            astore 1 /* config */
        start local 1 // io.netty.channel.ChannelConfig config
         1: .line 134
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            aload 1 /* config */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.shouldBreakReadReady:(Lio/netty/channel/ChannelConfig;)Z
            ifeq 4
         2: .line 135
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.clearReadPending:()V
         3: .line 136
            return
         4: .line 138
      StackMap locals: io.netty.channel.ChannelConfig
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* pipeline */
        start local 2 // io.netty.channel.ChannelPipeline pipeline
         5: .line 139
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.getAllocator:()Lio/netty/buffer/ByteBufAllocator;
            astore 3 /* allocator */
        start local 3 // io.netty.buffer.ByteBufAllocator allocator
         6: .line 140
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.recvBufAllocHandle:()Lio/netty/channel/RecvByteBufAllocator$Handle;
            astore 4 /* allocHandle */
        start local 4 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
         7: .line 141
            aload 4 /* allocHandle */
            aload 1 /* config */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.reset:(Lio/netty/channel/ChannelConfig;)V
         8: .line 143
            aconst_null
            astore 5 /* byteBuf */
        start local 5 // io.netty.buffer.ByteBuf byteBuf
         9: .line 144
            iconst_0
            istore 6 /* close */
        start local 6 // boolean close
        10: .line 147
      StackMap locals: io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int
      StackMap stack:
            aload 4 /* allocHandle */
            aload 3 /* allocator */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.allocate:(Lio/netty/buffer/ByteBufAllocator;)Lio/netty/buffer/ByteBuf;
            astore 5 /* byteBuf */
        11: .line 148
            aload 4 /* allocHandle */
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            aload 5 /* byteBuf */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel.doReadBytes:(Lio/netty/buffer/ByteBuf;)I
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:(I)V
        12: .line 149
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:()I
            ifgt 21
        13: .line 151
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        14: .line 152
            aconst_null
            astore 5 /* byteBuf */
        15: .line 153
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:()I
            ifge 16
            iconst_1
            goto 17
      StackMap locals:
      StackMap stack:
        16: iconst_0
      StackMap locals:
      StackMap stack: int
        17: istore 6 /* close */
        18: .line 154
            iload 6 /* close */
            ifeq 26
        19: .line 156
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            iconst_0
            putfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
        20: .line 158
            goto 26
        21: .line 161
      StackMap locals:
      StackMap stack:
            aload 4 /* allocHandle */
            iconst_1
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.incMessagesRead:(I)V
        22: .line 162
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            iconst_0
            putfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
        23: .line 163
            aload 2 /* pipeline */
            aload 5 /* byteBuf */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
        24: .line 164
            aconst_null
            astore 5 /* byteBuf */
        25: .line 165
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.continueReading:()Z
            ifne 10
        26: .line 167
      StackMap locals:
      StackMap stack:
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.readComplete:()V
        27: .line 168
            aload 2 /* pipeline */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelReadComplete:()Lio/netty/channel/ChannelPipeline;
            pop
        28: .line 170
            iload 6 /* close */
            ifeq 39
        29: .line 171
            aload 0 /* this */
            aload 2 /* pipeline */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.closeOnRead:(Lio/netty/channel/ChannelPipeline;)V
        30: .line 173
            goto 39
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: astore 7 /* t */
        start local 7 // java.lang.Throwable t
        32: .line 174
            aload 0 /* this */
            aload 2 /* pipeline */
            aload 5 /* byteBuf */
            aload 7 /* t */
            iload 6 /* close */
            aload 4 /* allocHandle */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.handleReadException:(Lio/netty/channel/ChannelPipeline;Lio/netty/buffer/ByteBuf;Ljava/lang/Throwable;ZLio/netty/channel/RecvByteBufAllocator$Handle;)V
        end local 7 // java.lang.Throwable t
        33: .line 182
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            getfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
            ifne 41
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 41
        34: .line 183
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.removeReadOp:()V
            goto 41
        35: .line 175
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        36: .line 182
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            getfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
            ifne 38
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 38
        37: .line 183
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.removeReadOp:()V
        38: .line 185
      StackMap locals: io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int top java.lang.Throwable
      StackMap stack:
            aload 8
            athrow
        39: .line 182
      StackMap locals: io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.this$0:Lio/netty/channel/nio/AbstractNioByteChannel;
            getfield io.netty.channel.nio.AbstractNioByteChannel.readPending:Z
            ifne 41
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 41
        40: .line 183
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.removeReadOp:()V
        41: .line 186
      StackMap locals:
      StackMap stack:
            return
        end local 6 // boolean close
        end local 5 // io.netty.buffer.ByteBuf byteBuf
        end local 4 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
        end local 3 // io.netty.buffer.ByteBufAllocator allocator
        end local 2 // io.netty.channel.ChannelPipeline pipeline
        end local 1 // io.netty.channel.ChannelConfig config
        end local 0 // io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   42     0         this  Lio/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe;
            1   42     1       config  Lio/netty/channel/ChannelConfig;
            5   42     2     pipeline  Lio/netty/channel/ChannelPipeline;
            6   42     3    allocator  Lio/netty/buffer/ByteBufAllocator;
            7   42     4  allocHandle  Lio/netty/channel/RecvByteBufAllocator$Handle;
            9   42     5      byteBuf  Lio/netty/buffer/ByteBuf;
           10   42     6        close  Z
           32   33     7            t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          10    30      31  Class java.lang.Throwable
          10    33      35  any
}
SourceFile: "AbstractNioByteChannel.java"
NestHost: io.netty.channel.nio.AbstractNioByteChannel
InnerClasses:
  public abstract Handle = io.netty.channel.RecvByteBufAllocator$Handle of io.netty.channel.RecvByteBufAllocator
  protected NioByteUnsafe = io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe of io.netty.channel.nio.AbstractNioByteChannel
  protected abstract AbstractNioUnsafe = io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe of io.netty.channel.nio.AbstractNioChannel