public abstract class io.netty.channel.oio.AbstractOioByteChannel extends io.netty.channel.oio.AbstractOioChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.netty.channel.oio.AbstractOioByteChannel
  super_class: io.netty.channel.oio.AbstractOioChannel
{
  private static final io.netty.channel.ChannelMetadata METADATA;
    descriptor: Lio/netty/channel/ChannelMetadata;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String EXPECTED_TYPES;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 40
            new io.netty.channel.ChannelMetadata
            dup
            iconst_0
            invokespecial io.netty.channel.ChannelMetadata.<init>:(Z)V
            putstatic io.netty.channel.oio.AbstractOioByteChannel.METADATA:Lio/netty/channel/ChannelMetadata;
         1: .line 42
            new java.lang.StringBuilder
            dup
            ldc " (expected: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lio/netty/buffer/ByteBuf;
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Class;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 43
            ldc Lio/netty/channel/FileRegion;
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Class;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         3: .line 42
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 41
            putstatic io.netty.channel.oio.AbstractOioByteChannel.EXPECTED_TYPES:Ljava/lang/String;
         5: .line 43
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
        start local 1 // io.netty.channel.Channel parent
         0: .line 49
            aload 0 /* this */
            aload 1 /* parent */
            invokespecial io.netty.channel.oio.AbstractOioChannel.<init>:(Lio/netty/channel/Channel;)V
         1: .line 50
            return
        end local 1 // io.netty.channel.Channel parent
        end local 0 // io.netty.channel.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/netty/channel/oio/AbstractOioByteChannel;
            0    2     1  parent  Lio/netty/channel/Channel;
    MethodParameters:
        Name  Flags
      parent  

  public io.netty.channel.ChannelMetadata metadata();
    descriptor: ()Lio/netty/channel/ChannelMetadata;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
         0: .line 54
            getstatic io.netty.channel.oio.AbstractOioByteChannel.METADATA:Lio/netty/channel/ChannelMetadata;
            areturn
        end local 0 // io.netty.channel.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/oio/AbstractOioByteChannel;

  protected abstract boolean isInputShutdown();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract io.netty.channel.ChannelFuture shutdownInput();
    descriptor: ()Lio/netty/channel/ChannelFuture;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  private void closeOnRead(io.netty.channel.ChannelPipeline);
    descriptor: (Lio/netty/channel/ChannelPipeline;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
        start local 1 // io.netty.channel.ChannelPipeline pipeline
         0: .line 70
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.isOpen:()Z
            ifeq 7
         1: .line 71
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.config:()Lio/netty/channel/ChannelConfig;
            getstatic io.netty.channel.ChannelOption.ALLOW_HALF_CLOSURE:Lio/netty/channel/ChannelOption;
            invokeinterface io.netty.channel.ChannelConfig.getOption:(Lio/netty/channel/ChannelOption;)Ljava/lang/Object;
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ifeq 5
         2: .line 72
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.shutdownInput:()Lio/netty/channel/ChannelFuture;
            pop
         3: .line 73
            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 74
            goto 6
         5: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.unsafe:()Lio/netty/channel/Channel$Unsafe;
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.unsafe:()Lio/netty/channel/Channel$Unsafe;
            invokeinterface io.netty.channel.Channel$Unsafe.voidPromise:()Lio/netty/channel/ChannelPromise;
            invokeinterface io.netty.channel.Channel$Unsafe.close:(Lio/netty/channel/ChannelPromise;)V
         6: .line 77
      StackMap locals:
      StackMap stack:
            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
         7: .line 79
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelPipeline pipeline
        end local 0 // io.netty.channel.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lio/netty/channel/oio/AbstractOioByteChannel;
            0    8     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.oio.AbstractOioByteChannel 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 83
            aload 2 /* byteBuf */
            ifnull 6
         1: .line 84
            aload 2 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifeq 5
         2: .line 85
            aload 0 /* this */
            iconst_0
            putfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
         3: .line 86
            aload 1 /* pipeline */
            aload 2 /* byteBuf */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 87
            goto 6
         5: .line 88
      StackMap locals:
      StackMap stack:
            aload 2 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
         6: .line 91
      StackMap locals:
      StackMap stack:
            aload 5 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.readComplete:()V
         7: .line 92
            aload 1 /* pipeline */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelReadComplete:()Lio/netty/channel/ChannelPipeline;
            pop
         8: .line 93
            aload 1 /* pipeline */
            aload 3 /* cause */
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
         9: .line 94
            iload 4 /* close */
            ifne 10
            aload 3 /* cause */
            instanceof java.io.IOException
            ifeq 11
        10: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* pipeline */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.closeOnRead:(Lio/netty/channel/ChannelPipeline;)V
        11: .line 97
      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.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lio/netty/channel/oio/AbstractOioByteChannel;
            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  

  protected void doRead();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=13, args_size=1
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
         0: .line 101
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.config:()Lio/netty/channel/ChannelConfig;
            astore 1 /* config */
        start local 1 // io.netty.channel.ChannelConfig config
         1: .line 102
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.isInputShutdown:()Z
            ifne 2
            aload 0 /* this */
            getfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
            ifne 3
         2: .line 105
      StackMap locals: io.netty.channel.ChannelConfig
      StackMap stack:
            return
         3: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
         4: .line 111
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* pipeline */
        start local 2 // io.netty.channel.ChannelPipeline pipeline
         5: .line 112
            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 113
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.unsafe:()Lio/netty/channel/Channel$Unsafe;
            invokeinterface io.netty.channel.Channel$Unsafe.recvBufAllocHandle:()Lio/netty/channel/RecvByteBufAllocator$Handle;
            astore 4 /* allocHandle */
        start local 4 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
         7: .line 114
            aload 4 /* allocHandle */
            aload 1 /* config */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.reset:(Lio/netty/channel/ChannelConfig;)V
         8: .line 116
            aconst_null
            astore 5 /* byteBuf */
        start local 5 // io.netty.buffer.ByteBuf byteBuf
         9: .line 117
            iconst_0
            istore 6 /* close */
        start local 6 // boolean close
        10: .line 118
            iconst_0
            istore 7 /* readData */
        start local 7 // boolean readData
        11: .line 120
            aload 4 /* allocHandle */
            aload 3 /* allocator */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.allocate:(Lio/netty/buffer/ByteBufAllocator;)Lio/netty/buffer/ByteBuf;
            astore 5 /* byteBuf */
        12: .line 122
      StackMap locals: io.netty.channel.oio.AbstractOioByteChannel io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int int
      StackMap stack:
            aload 4 /* allocHandle */
            aload 0 /* this */
            aload 5 /* byteBuf */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.doReadBytes:(Lio/netty/buffer/ByteBuf;)I
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:(I)V
        13: .line 123
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:()I
            ifgt 23
        14: .line 124
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifne 42
        15: .line 125
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        16: .line 126
            aconst_null
            astore 5 /* byteBuf */
        17: .line 127
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.lastBytesRead:()I
            ifge 18
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: istore 6 /* close */
        20: .line 128
            iload 6 /* close */
            ifeq 42
        21: .line 130
            aload 0 /* this */
            iconst_0
            putfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
        22: .line 133
            goto 42
        23: .line 135
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 7 /* readData */
        24: .line 138
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.available:()I
            istore 8 /* available */
        start local 8 // int available
        25: .line 139
            iload 8 /* available */
            ifgt 27
        26: .line 140
            goto 42
        27: .line 144
      StackMap locals: int
      StackMap stack:
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.isWritable:()Z
            ifne 41
        28: .line 145
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.capacity:()I
            istore 9 /* capacity */
        start local 9 // int capacity
        29: .line 146
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.maxCapacity:()I
            istore 10 /* maxCapacity */
        start local 10 // int maxCapacity
        30: .line 147
            iload 9 /* capacity */
            iload 10 /* maxCapacity */
            if_icmpne 36
        31: .line 148
            aload 4 /* allocHandle */
            iconst_1
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.incMessagesRead:(I)V
        32: .line 149
            aload 0 /* this */
            iconst_0
            putfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
        33: .line 150
            aload 2 /* pipeline */
            aload 5 /* byteBuf */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
        34: .line 151
            aload 4 /* allocHandle */
            aload 3 /* allocator */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.allocate:(Lio/netty/buffer/ByteBufAllocator;)Lio/netty/buffer/ByteBuf;
            astore 5 /* byteBuf */
        35: .line 152
            goto 41
        36: .line 153
      StackMap locals: int int
      StackMap stack:
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            istore 11 /* writerIndex */
        start local 11 // int writerIndex
        37: .line 154
            iload 11 /* writerIndex */
            iload 8 /* available */
            iadd
            iload 10 /* maxCapacity */
            if_icmple 40
        38: .line 155
            aload 5 /* byteBuf */
            iload 10 /* maxCapacity */
            invokevirtual io.netty.buffer.ByteBuf.capacity:(I)Lio/netty/buffer/ByteBuf;
            pop
        39: .line 156
            goto 41
        40: .line 157
      StackMap locals: int
      StackMap stack:
            aload 5 /* byteBuf */
            iload 8 /* available */
            invokevirtual io.netty.buffer.ByteBuf.ensureWritable:(I)Lio/netty/buffer/ByteBuf;
            pop
        end local 11 // int writerIndex
        end local 10 // int maxCapacity
        end local 9 // int capacity
        end local 8 // int available
        41: .line 161
      StackMap locals: io.netty.channel.oio.AbstractOioByteChannel io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int int
      StackMap stack:
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.continueReading:()Z
            ifne 12
        42: .line 163
      StackMap locals:
      StackMap stack:
            aload 5 /* byteBuf */
            ifnull 49
        43: .line 166
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifeq 47
        44: .line 167
            aload 0 /* this */
            iconst_0
            putfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
        45: .line 168
            aload 2 /* pipeline */
            aload 5 /* byteBuf */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelPipeline;
            pop
        46: .line 169
            goto 48
        47: .line 170
      StackMap locals:
      StackMap stack:
            aload 5 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        48: .line 172
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* byteBuf */
        49: .line 175
      StackMap locals:
      StackMap stack:
            iload 7 /* readData */
            ifeq 52
        50: .line 176
            aload 4 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.readComplete:()V
        51: .line 177
            aload 2 /* pipeline */
            invokeinterface io.netty.channel.ChannelPipeline.fireChannelReadComplete:()Lio/netty/channel/ChannelPipeline;
            pop
        52: .line 180
      StackMap locals:
      StackMap stack:
            iload 6 /* close */
            ifeq 63
        53: .line 181
            aload 0 /* this */
            aload 2 /* pipeline */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.closeOnRead:(Lio/netty/channel/ChannelPipeline;)V
        54: .line 183
            goto 63
      StackMap locals:
      StackMap stack: java.lang.Throwable
        55: astore 8 /* t */
        start local 8 // java.lang.Throwable t
        56: .line 184
            aload 0 /* this */
            aload 2 /* pipeline */
            aload 5 /* byteBuf */
            aload 8 /* t */
            iload 6 /* close */
            aload 4 /* allocHandle */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.handleReadException:(Lio/netty/channel/ChannelPipeline;Lio/netty/buffer/ByteBuf;Ljava/lang/Throwable;ZLio/netty/channel/RecvByteBufAllocator$Handle;)V
        end local 8 // java.lang.Throwable t
        57: .line 186
            aload 0 /* this */
            getfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
            ifne 58
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 58
            iload 7 /* readData */
            ifne 65
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.isActive:()Z
            ifeq 65
        58: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.read:()Lio/netty/channel/Channel;
            pop
            goto 65
        59: .line 185
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        60: .line 186
            aload 0 /* this */
            getfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
            ifne 61
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 61
            iload 7 /* readData */
            ifne 62
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.isActive:()Z
            ifeq 62
        61: .line 189
      StackMap locals: io.netty.channel.oio.AbstractOioByteChannel io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int int top top top top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.read:()Lio/netty/channel/Channel;
            pop
        62: .line 191
      StackMap locals:
      StackMap stack:
            aload 12
            athrow
        63: .line 186
      StackMap locals: io.netty.channel.oio.AbstractOioByteChannel io.netty.channel.ChannelConfig io.netty.channel.ChannelPipeline io.netty.buffer.ByteBufAllocator io.netty.channel.RecvByteBufAllocator$Handle io.netty.buffer.ByteBuf int int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.oio.AbstractOioByteChannel.readPending:Z
            ifne 64
            aload 1 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifne 64
            iload 7 /* readData */
            ifne 65
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.isActive:()Z
            ifeq 65
        64: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.read:()Lio/netty/channel/Channel;
            pop
        65: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 7 // boolean readData
        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.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   66     0         this  Lio/netty/channel/oio/AbstractOioByteChannel;
            1   66     1       config  Lio/netty/channel/ChannelConfig;
            5   66     2     pipeline  Lio/netty/channel/ChannelPipeline;
            6   66     3    allocator  Lio/netty/buffer/ByteBufAllocator;
            7   66     4  allocHandle  Lio/netty/channel/RecvByteBufAllocator$Handle;
            9   66     5      byteBuf  Lio/netty/buffer/ByteBuf;
           10   66     6        close  Z
           11   66     7     readData  Z
           25   41     8    available  I
           29   41     9     capacity  I
           30   41    10  maxCapacity  I
           37   41    11  writerIndex  I
           56   57     8            t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          11    54      55  Class java.lang.Throwable
          11    57      59  any

  protected void doWrite(io.netty.channel.ChannelOutboundBuffer);
    descriptor: (Lio/netty/channel/ChannelOutboundBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
        start local 1 // io.netty.channel.ChannelOutboundBuffer in
         0: .line 197
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.current:()Ljava/lang/Object;
            astore 2 /* msg */
        start local 2 // java.lang.Object msg
         1: .line 198
            aload 2 /* msg */
            ifnonnull 3
         2: .line 200
            goto 25
         3: .line 202
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.buffer.ByteBuf
            ifeq 14
         4: .line 203
            aload 2 /* msg */
            checkcast io.netty.buffer.ByteBuf
            astore 3 /* buf */
        start local 3 // io.netty.buffer.ByteBuf buf
         5: .line 204
            aload 3 /* buf */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            istore 4 /* readableBytes */
        start local 4 // int readableBytes
         6: .line 205
            goto 11
         7: .line 206
      StackMap locals: io.netty.buffer.ByteBuf int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* buf */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.doWriteBytes:(Lio/netty/buffer/ByteBuf;)V
         8: .line 207
            aload 3 /* buf */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            istore 5 /* newReadableBytes */
        start local 5 // int newReadableBytes
         9: .line 208
            aload 1 /* in */
            iload 4 /* readableBytes */
            iload 5 /* newReadableBytes */
            isub
            i2l
            invokevirtual io.netty.channel.ChannelOutboundBuffer.progress:(J)V
        10: .line 209
            iload 5 /* newReadableBytes */
            istore 4 /* readableBytes */
        end local 5 // int newReadableBytes
        11: .line 205
      StackMap locals:
      StackMap stack:
            iload 4 /* readableBytes */
            ifgt 7
        12: .line 211
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.remove:()Z
            pop
        end local 4 // int readableBytes
        end local 3 // io.netty.buffer.ByteBuf buf
        13: .line 212
            goto 0
      StackMap locals:
      StackMap stack:
        14: aload 2 /* msg */
            instanceof io.netty.channel.FileRegion
            ifeq 21
        15: .line 213
            aload 2 /* msg */
            checkcast io.netty.channel.FileRegion
            astore 3 /* region */
        start local 3 // io.netty.channel.FileRegion region
        16: .line 214
            aload 3 /* region */
            invokeinterface io.netty.channel.FileRegion.transferred:()J
            lstore 4 /* transferred */
        start local 4 // long transferred
        17: .line 215
            aload 0 /* this */
            aload 3 /* region */
            invokevirtual io.netty.channel.oio.AbstractOioByteChannel.doWriteFileRegion:(Lio/netty/channel/FileRegion;)V
        18: .line 216
            aload 1 /* in */
            aload 3 /* region */
            invokeinterface io.netty.channel.FileRegion.transferred:()J
            lload 4 /* transferred */
            lsub
            invokevirtual io.netty.channel.ChannelOutboundBuffer.progress:(J)V
        19: .line 217
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.remove:()Z
            pop
        end local 4 // long transferred
        end local 3 // io.netty.channel.FileRegion region
        20: .line 218
            goto 0
        21: .line 219
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            new java.lang.UnsupportedOperationException
            dup
        22: .line 220
            new java.lang.StringBuilder
            dup
            ldc "unsupported message type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* msg */
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
        23: .line 219
            invokevirtual io.netty.channel.ChannelOutboundBuffer.remove:(Ljava/lang/Throwable;)Z
            pop
        end local 2 // java.lang.Object msg
        24: .line 196
            goto 0
        25: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelOutboundBuffer in
        end local 0 // io.netty.channel.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   26     0              this  Lio/netty/channel/oio/AbstractOioByteChannel;
            0   26     1                in  Lio/netty/channel/ChannelOutboundBuffer;
            1   24     2               msg  Ljava/lang/Object;
            5   13     3               buf  Lio/netty/buffer/ByteBuf;
            6   13     4     readableBytes  I
            9   11     5  newReadableBytes  I
           16   20     3            region  Lio/netty/channel/FileRegion;
           17   20     4       transferred  J
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      in    

  protected final java.lang.Object filterOutboundMessage(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.netty.channel.oio.AbstractOioByteChannel this
        start local 1 // java.lang.Object msg
         0: .line 227
            aload 1 /* msg */
            instanceof io.netty.buffer.ByteBuf
            ifne 1
            aload 1 /* msg */
            instanceof io.netty.channel.FileRegion
            ifeq 2
         1: .line 228
      StackMap locals:
      StackMap stack:
            aload 1 /* msg */
            areturn
         2: .line 231
      StackMap locals:
      StackMap stack:
            new java.lang.UnsupportedOperationException
            dup
         3: .line 232
            new java.lang.StringBuilder
            dup
            ldc "unsupported message type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* msg */
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic io.netty.channel.oio.AbstractOioByteChannel.EXPECTED_TYPES:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 231
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.Object msg
        end local 0 // io.netty.channel.oio.AbstractOioByteChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/netty/channel/oio/AbstractOioByteChannel;
            0    5     1   msg  Ljava/lang/Object;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      msg   

  protected abstract int available();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract int doReadBytes(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      buf   

  protected abstract void doWriteBytes(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      buf   

  protected abstract void doWriteFileRegion(io.netty.channel.FileRegion);
    descriptor: (Lio/netty/channel/FileRegion;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      region  
}
SourceFile: "AbstractOioByteChannel.java"
InnerClasses:
  public abstract Unsafe = io.netty.channel.Channel$Unsafe of io.netty.channel.Channel
  public abstract Handle = io.netty.channel.RecvByteBufAllocator$Handle of io.netty.channel.RecvByteBufAllocator