public abstract class io.netty.channel.unix.SocketWritableByteChannel implements java.nio.channels.WritableByteChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.netty.channel.unix.SocketWritableByteChannel
  super_class: java.lang.Object
{
  private final io.netty.channel.unix.FileDescriptor fd;
    descriptor: Lio/netty/channel/unix/FileDescriptor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected void <init>(io.netty.channel.unix.FileDescriptor);
    descriptor: (Lio/netty/channel/unix/FileDescriptor;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.channel.unix.SocketWritableByteChannel this
        start local 1 // io.netty.channel.unix.FileDescriptor fd
         0: .line 25
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 26
            aload 0 /* this */
            aload 1 /* fd */
            ldc "fd"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.channel.unix.FileDescriptor
            putfield io.netty.channel.unix.SocketWritableByteChannel.fd:Lio/netty/channel/unix/FileDescriptor;
         2: .line 27
            return
        end local 1 // io.netty.channel.unix.FileDescriptor fd
        end local 0 // io.netty.channel.unix.SocketWritableByteChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/unix/SocketWritableByteChannel;
            0    3     1    fd  Lio/netty/channel/unix/FileDescriptor;
    MethodParameters:
      Name  Flags
      fd    

  public final int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // io.netty.channel.unix.SocketWritableByteChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 32
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 3 /* position */
        start local 3 // int position
         1: .line 33
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 4 /* limit */
        start local 4 // int limit
         2: .line 34
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.isDirect:()Z
            ifeq 5
         3: .line 35
            aload 0 /* this */
            getfield io.netty.channel.unix.SocketWritableByteChannel.fd:Lio/netty/channel/unix/FileDescriptor;
            aload 1 /* src */
            iload 3 /* position */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual io.netty.channel.unix.FileDescriptor.write:(Ljava/nio/ByteBuffer;II)I
            istore 2 /* written */
        start local 2 // int written
         4: .line 36
            goto 27
        end local 2 // int written
         5: .line 37
      StackMap locals: io.netty.channel.unix.SocketWritableByteChannel java.nio.ByteBuffer top int int
      StackMap stack:
            iload 4 /* limit */
            iload 3 /* position */
            isub
            istore 5 /* readableBytes */
        start local 5 // int readableBytes
         6: .line 38
            aconst_null
            astore 6 /* buffer */
        start local 6 // io.netty.buffer.ByteBuf buffer
         7: .line 40
            iload 5 /* readableBytes */
            ifne 10
         8: .line 41
            getstatic io.netty.buffer.Unpooled.EMPTY_BUFFER:Lio/netty/buffer/ByteBuf;
            astore 6 /* buffer */
         9: .line 42
            goto 17
        10: .line 43
      StackMap locals: int io.netty.buffer.ByteBuf
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.unix.SocketWritableByteChannel.alloc:()Lio/netty/buffer/ByteBufAllocator;
            astore 7 /* alloc */
        start local 7 // io.netty.buffer.ByteBufAllocator alloc
        11: .line 44
            aload 7 /* alloc */
            invokeinterface io.netty.buffer.ByteBufAllocator.isDirectBufferPooled:()Z
            ifeq 14
        12: .line 45
            aload 7 /* alloc */
            iload 5 /* readableBytes */
            invokeinterface io.netty.buffer.ByteBufAllocator.directBuffer:(I)Lio/netty/buffer/ByteBuf;
            astore 6 /* buffer */
        13: .line 46
            goto 17
        14: .line 47
      StackMap locals: io.netty.buffer.ByteBufAllocator
      StackMap stack:
            invokestatic io.netty.buffer.ByteBufUtil.threadLocalDirectBuffer:()Lio/netty/buffer/ByteBuf;
            astore 6 /* buffer */
        15: .line 48
            aload 6 /* buffer */
            ifnonnull 17
        16: .line 49
            iload 5 /* readableBytes */
            invokestatic io.netty.buffer.Unpooled.directBuffer:(I)Lio/netty/buffer/ByteBuf;
            astore 6 /* buffer */
        end local 7 // io.netty.buffer.ByteBufAllocator alloc
        17: .line 53
      StackMap locals:
      StackMap stack:
            aload 6 /* buffer */
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:(Ljava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf;
            pop
        18: .line 54
            aload 6 /* buffer */
            aload 6 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.readerIndex:()I
            iload 5 /* readableBytes */
            invokevirtual io.netty.buffer.ByteBuf.internalNioBuffer:(II)Ljava/nio/ByteBuffer;
            astore 7 /* nioBuffer */
        start local 7 // java.nio.ByteBuffer nioBuffer
        19: .line 55
            aload 0 /* this */
            getfield io.netty.channel.unix.SocketWritableByteChannel.fd:Lio/netty/channel/unix/FileDescriptor;
            aload 7 /* nioBuffer */
            aload 7 /* nioBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 7 /* nioBuffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual io.netty.channel.unix.FileDescriptor.write:(Ljava/nio/ByteBuffer;II)I
            istore 2 /* written */
        end local 7 // java.nio.ByteBuffer nioBuffer
        start local 2 // int written
        20: .line 56
            goto 25
        end local 2 // int written
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: astore 8
        22: .line 57
            aload 6 /* buffer */
            ifnull 24
        23: .line 58
            aload 6 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        24: .line 60
      StackMap locals: io.netty.channel.unix.SocketWritableByteChannel java.nio.ByteBuffer top int int int io.netty.buffer.ByteBuf top java.lang.Throwable
      StackMap stack:
            aload 8
            athrow
        start local 2 // int written
        25: .line 57
      StackMap locals: io.netty.channel.unix.SocketWritableByteChannel java.nio.ByteBuffer int int int int io.netty.buffer.ByteBuf
      StackMap stack:
            aload 6 /* buffer */
            ifnull 27
        26: .line 58
            aload 6 /* buffer */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        end local 6 // io.netty.buffer.ByteBuf buffer
        end local 5 // int readableBytes
        27: .line 62
      StackMap locals:
      StackMap stack:
            iload 2 /* written */
            ifle 29
        28: .line 63
            aload 1 /* src */
            iload 3 /* position */
            iload 2 /* written */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        29: .line 65
      StackMap locals:
      StackMap stack:
            iload 2 /* written */
            ireturn
        end local 4 // int limit
        end local 3 // int position
        end local 2 // int written
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.netty.channel.unix.SocketWritableByteChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   30     0           this  Lio/netty/channel/unix/SocketWritableByteChannel;
            0   30     1            src  Ljava/nio/ByteBuffer;
            4    5     2        written  I
           20   21     2        written  I
           25   30     2        written  I
            1   30     3       position  I
            2   30     4          limit  I
            6   27     5  readableBytes  I
            7   27     6         buffer  Lio/netty/buffer/ByteBuf;
           11   17     7          alloc  Lio/netty/buffer/ByteBufAllocator;
           19   20     7      nioBuffer  Ljava/nio/ByteBuffer;
      Exception table:
        from    to  target  type
           7    21      21  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public final boolean isOpen();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.unix.SocketWritableByteChannel this
         0: .line 70
            aload 0 /* this */
            getfield io.netty.channel.unix.SocketWritableByteChannel.fd:Lio/netty/channel/unix/FileDescriptor;
            invokevirtual io.netty.channel.unix.FileDescriptor.isOpen:()Z
            ireturn
        end local 0 // io.netty.channel.unix.SocketWritableByteChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/unix/SocketWritableByteChannel;

  public final void close();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.unix.SocketWritableByteChannel this
         0: .line 75
            aload 0 /* this */
            getfield io.netty.channel.unix.SocketWritableByteChannel.fd:Lio/netty/channel/unix/FileDescriptor;
            invokevirtual io.netty.channel.unix.FileDescriptor.close:()V
         1: .line 76
            return
        end local 0 // io.netty.channel.unix.SocketWritableByteChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/channel/unix/SocketWritableByteChannel;
    Exceptions:
      throws java.io.IOException

  protected abstract io.netty.buffer.ByteBufAllocator alloc();
    descriptor: ()Lio/netty/buffer/ByteBufAllocator;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
}
SourceFile: "SocketWritableByteChannel.java"