final class io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe extends io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe
  super_class: io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe
{
  private final java.util.List<java.lang.Object> readBuf;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Object;>;

  final io.netty.channel.nio.AbstractNioMessageChannel this$0;
    descriptor: Lio/netty/channel/nio/AbstractNioMessageChannel;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 58
            ldc Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(io.netty.channel.nio.AbstractNioMessageChannel);
    descriptor: (Lio/netty/channel/nio/AbstractNioMessageChannel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe this
         0: .line 58
            aload 0 /* this */
            aload 1
            putfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            aload 0 /* this */
            aload 1
            invokespecial io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.<init>:(Lio/netty/channel/nio/AbstractNioChannel;)V
         1: .line 60
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.readBuf:Ljava/util/List;
         2: .line 58
            return
        end local 0 // io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/nio/AbstractNioMessageChannel$NioMessageUnsafe;
    MethodParameters:
        Name  Flags
      this$0  final

  public void read();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=9, args_size=1
        start local 0 // io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe this
         0: .line 64
            getstatic io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.eventLoop:()Lio/netty/channel/nio/NioEventLoop;
            invokevirtual io.netty.channel.nio.NioEventLoop.inEventLoop:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 65
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.config:()Lio/netty/channel/ChannelConfig;
            astore 1 /* config */
        start local 1 // io.netty.channel.ChannelConfig config
         2: .line 66
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* pipeline */
        start local 2 // io.netty.channel.ChannelPipeline pipeline
         3: .line 67
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.unsafe:()Lio/netty/channel/nio/AbstractNioChannel$NioUnsafe;
            invokeinterface io.netty.channel.nio.AbstractNioChannel$NioUnsafe.recvBufAllocHandle:()Lio/netty/channel/RecvByteBufAllocator$Handle;
            astore 3 /* allocHandle */
        start local 3 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
         4: .line 68
            aload 3 /* allocHandle */
            aload 1 /* config */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.reset:(Lio/netty/channel/ChannelConfig;)V
         5: .line 70
            iconst_0
            istore 4 /* closed */
        start local 4 // boolean closed
         6: .line 71
            aconst_null
            astore 5 /* exception */
        start local 5 // java.lang.Throwable exception
         7: .line 75
      StackMap locals: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.channel.RecvByteBufAllocator$Handle int java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.readBuf:Ljava/util/List;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.doReadMessages:(Ljava/util/List;)I
            istore 6 /* localRead */
        start local 6 // int localRead
         8: .line 76
            iload 6 /* localRead */
            ifne 10
         9: .line 77
            goto 18
        10: .line 79
      StackMap locals: int
      StackMap stack:
            iload 6 /* localRead */
            ifge 13
        11: .line 80
            iconst_1
            istore 4 /* closed */
        12: .line 81
            goto 18
        13: .line 84
      StackMap locals:
      StackMap stack:
            aload 3 /* allocHandle */
            iload 6 /* localRead */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.incMessagesRead:(I)V
        end local 6 // int localRead
        14: .line 85
            aload 3 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.continueReading:()Z
            ifne 7
        15: .line 86
            goto 18
      StackMap locals: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.channel.RecvByteBufAllocator$Handle int java.lang.Throwable
      StackMap stack: java.lang.Throwable
        16: astore 6 /* t */
        start local 6 // java.lang.Throwable t
        17: .line 87
            aload 6 /* t */
            astore 5 /* exception */
        end local 6 // java.lang.Throwable t
        18: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.readBuf:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            istore 6 /* size */
        start local 6 // int size
        19: .line 91
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        20: goto 24
        21: .line 92
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            iconst_0
            putfield io.netty.channel.nio.AbstractNioMessageChannel.readPending:Z
        22: .line 93
            aload 2 /* pipeline */
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.readBuf:Ljava/util/List;
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
        23: .line 91
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 7 /* i */
            iload 6 /* size */
            if_icmplt 21
        end local 7 // int i
        25: .line 95
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.readBuf:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
        26: .line 96
            aload 3 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.readComplete:()V
        27: .line 97
            aload 2 /* pipeline */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelReadComplete:()Lio/netty/channel/ChannelPipeline;
            pop
        28: .line 99
            aload 5 /* exception */
            ifnull 31
        29: .line 100
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            aload 5 /* exception */
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.closeOnReadError:(Ljava/lang/Throwable;)Z
            istore 4 /* closed */
        30: .line 102
            aload 2 /* pipeline */
            aload 5 /* exception */
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
        31: .line 105
      StackMap locals:
      StackMap stack:
            iload 4 /* closed */
            ifeq 40
        32: .line 106
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            iconst_1
            putfield io.netty.channel.nio.AbstractNioMessageChannel.inputShutdown:Z
        33: .line 107
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel.isOpen:()Z
            ifeq 40
        34: .line 108
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.voidPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.close:(Lio/netty/channel/ChannelPromise;)V
        end local 6 // int size
        35: .line 111
            goto 40
      StackMap locals: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.channel.RecvByteBufAllocator$Handle int java.lang.Throwable
      StackMap stack: java.lang.Throwable
        36: astore 8
        37: .line 118
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            getfield io.netty.channel.nio.AbstractNioMessageChannel.readPending:Z
            ifne 39
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 39
        38: .line 119
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.removeReadOp:()V
        39: .line 121
      StackMap locals: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.channel.RecvByteBufAllocator$Handle int java.lang.Throwable top top java.lang.Throwable
      StackMap stack:
            aload 8
            athrow
        40: .line 118
      StackMap locals: io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.channel.RecvByteBufAllocator$Handle int java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.this$0:Lio/netty/channel/nio/AbstractNioMessageChannel;
            getfield io.netty.channel.nio.AbstractNioMessageChannel.readPending:Z
            ifne 42
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 42
        41: .line 119
            aload 0 /* this */
            invokevirtual io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.removeReadOp:()V
        42: .line 122
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.lang.Throwable exception
        end local 4 // boolean closed
        end local 3 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
        end local 2 // io.netty.channel.ChannelPipeline pipeline
        end local 1 // io.netty.channel.ChannelConfig config
        end local 0 // io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   43     0         this  Lio/netty/channel/nio/AbstractNioMessageChannel$NioMessageUnsafe;
            2   43     1       config  Lio/netty/channel/ChannelConfig;
            3   43     2     pipeline  Lio/netty/channel/ChannelPipeline;
            4   43     3  allocHandle  Lio/netty/channel/RecvByteBufAllocator$Handle;
            6   43     4       closed  Z
            7   43     5    exception  Ljava/lang/Throwable;
            8   14     6    localRead  I
           17   18     6            t  Ljava/lang/Throwable;
           19   35     6         size  I
           20   25     7            i  I
      Exception table:
        from    to  target  type
           7    15      16  Class java.lang.Throwable
           7    36      36  any
}
SourceFile: "AbstractNioMessageChannel.java"
NestHost: io.netty.channel.nio.AbstractNioMessageChannel
InnerClasses:
  public abstract Handle = io.netty.channel.RecvByteBufAllocator$Handle of io.netty.channel.RecvByteBufAllocator
  protected abstract AbstractNioUnsafe = io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe of io.netty.channel.nio.AbstractNioChannel
  public abstract NioUnsafe = io.netty.channel.nio.AbstractNioChannel$NioUnsafe of io.netty.channel.nio.AbstractNioChannel
  private final NioMessageUnsafe = io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe of io.netty.channel.nio.AbstractNioMessageChannel