class org.xnio.nio.WorkerThread$2 extends org.xnio.nio.NioHandle
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.xnio.nio.WorkerThread$2
  super_class: org.xnio.nio.NioHandle
{
  final org.xnio.nio.WorkerThread this$0;
    descriptor: Lorg/xnio/nio/WorkerThread;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private final java.nio.channels.ServerSocketChannel val$serverChannel;
    descriptor: Ljava/nio/channels/ServerSocketChannel;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final org.xnio.OptionMap val$optionMap;
    descriptor: Lorg/xnio/OptionMap;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final org.xnio.FutureResult val$futureResult;
    descriptor: Lorg/xnio/FutureResult;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final org.xnio.ChannelListener val$openListener;
    descriptor: Lorg/xnio/ChannelListener;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  void <init>(org.xnio.nio.WorkerThread, org.xnio.nio.WorkerThread, java.nio.channels.SelectionKey, java.nio.channels.ServerSocketChannel, org.xnio.OptionMap, org.xnio.FutureResult, org.xnio.ChannelListener);
    descriptor: (Lorg/xnio/nio/WorkerThread;Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/ServerSocketChannel;Lorg/xnio/OptionMap;Lorg/xnio/FutureResult;Lorg/xnio/ChannelListener;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=8, args_size=8
        start local 0 // org.xnio.nio.WorkerThread$2 this
        start local 2 // org.xnio.nio.WorkerThread $anonymous0
        start local 3 // java.nio.channels.SelectionKey $anonymous1
         0: .line 177
            aload 0 /* this */
            aload 1
            putfield org.xnio.nio.WorkerThread$2.this$0:Lorg/xnio/nio/WorkerThread;
            aload 0 /* this */
            aload 4
            putfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            aload 0 /* this */
            aload 5
            putfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            aload 0 /* this */
            aload 6
            putfield org.xnio.nio.WorkerThread$2.val$futureResult:Lorg/xnio/FutureResult;
            aload 0 /* this */
            aload 7
            putfield org.xnio.nio.WorkerThread$2.val$openListener:Lorg/xnio/ChannelListener;
            aload 0 /* this */
            aload 2 /* $anonymous0 */
            aload 3 /* $anonymous1 */
            invokespecial org.xnio.nio.NioHandle.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;)V
            return
        end local 3 // java.nio.channels.SelectionKey $anonymous1
        end local 2 // org.xnio.nio.WorkerThread $anonymous0
        end local 0 // org.xnio.nio.WorkerThread$2 this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/xnio/nio/WorkerThread$2;
            0    1     2  $anonymous0  Lorg/xnio/nio/WorkerThread;
            0    1     3  $anonymous1  Ljava/nio/channels/SelectionKey;
    MethodParameters:
                   Name  Flags
      this$0             final
      $anonymous0        
      $anonymous1        
      val$serverChannel  final
      val$optionMap      final
      val$futureResult   final
      val$openListener   final

  void handleReady(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // org.xnio.nio.WorkerThread$2 this
        start local 1 // int ops
         0: .line 179
            iconst_0
            istore 2 /* ok */
        start local 2 // boolean ok
         1: .line 181
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokevirtual java.nio.channels.ServerSocketChannel.accept:()Ljava/nio/channels/SocketChannel;
            astore 3 /* channel */
        start local 3 // java.nio.channels.SocketChannel channel
         2: .line 182
            aload 3 /* channel */
            ifnonnull 7
         3: .line 183
            iconst_1
            istore 2 /* ok */
         4: .line 210
            iload 2 /* ok */
            ifne 6
         5: .line 211
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         6: .line 184
      StackMap locals: int java.nio.channels.SocketChannel
      StackMap stack:
            return
         7: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         8: .line 189
            aload 3 /* channel */
            iconst_0
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         9: .line 190
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.TCP_OOB_INLINE:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 10
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.TCP_OOB_INLINE:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            invokevirtual java.net.Socket.setOOBInline:(Z)V
        10: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.TCP_NODELAY:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 11
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.TCP_NODELAY:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            invokevirtual java.net.Socket.setTcpNoDelay:(Z)V
        11: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.IP_TRAFFIC_CLASS:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 12
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.IP_TRAFFIC_CLASS:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokevirtual java.net.Socket.setTrafficClass:(I)V
        12: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.CLOSE_ABORT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 13
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.CLOSE_ABORT:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            iconst_0
            invokevirtual java.net.Socket.setSoLinger:(ZI)V
        13: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.KEEP_ALIVE:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 14
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.KEEP_ALIVE:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            invokevirtual java.net.Socket.setKeepAlive:(Z)V
        14: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.SEND_BUFFER:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 15
            aload 3 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.SEND_BUFFER:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokevirtual java.net.Socket.setSendBufferSize:(I)V
        15: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.this$0:Lorg/xnio/nio/WorkerThread;
            aload 3 /* channel */
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 4 /* selectionKey */
        start local 4 // java.nio.channels.SelectionKey selectionKey
        16: .line 197
            new org.xnio.nio.NioSocketStreamConnection
            dup
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.this$0:Lorg/xnio/nio/WorkerThread;
            aload 4 /* selectionKey */
            aconst_null
            invokespecial org.xnio.nio.NioSocketStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Lorg/xnio/nio/ChannelClosed;)V
            astore 5 /* connection */
        start local 5 // org.xnio.nio.NioSocketStreamConnection connection
        17: .line 198
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 18
            aload 5 /* connection */
            getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.xnio.nio.NioSocketStreamConnection.setOption:(Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 199
      StackMap locals: java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 19
            aload 5 /* connection */
            getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$optionMap:Lorg/xnio/OptionMap;
            getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.xnio.nio.NioSocketStreamConnection.setOption:(Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$futureResult:Lorg/xnio/FutureResult;
            aload 5 /* connection */
            invokevirtual org.xnio.FutureResult.setResult:(Ljava/lang/Object;)Z
            ifeq 26
        20: .line 201
            iconst_1
            istore 2 /* ok */
        21: .line 202
            aload 5 /* connection */
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$openListener:Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
        end local 5 // org.xnio.nio.NioSocketStreamConnection connection
        end local 4 // java.nio.channels.SelectionKey selectionKey
        22: .line 204
            goto 26
      StackMap locals: org.xnio.nio.WorkerThread$2 int int java.nio.channels.SocketChannel
      StackMap stack: java.lang.Throwable
        23: astore 6
        24: .line 205
            iload 2 /* ok */
            ifne 25
            aload 3 /* channel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        25: .line 206
      StackMap locals: org.xnio.nio.WorkerThread$2 int int java.nio.channels.SocketChannel top top java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        26: .line 205
      StackMap locals: org.xnio.nio.WorkerThread$2 int int java.nio.channels.SocketChannel
      StackMap stack:
            iload 2 /* ok */
            ifne 36
            aload 3 /* channel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        end local 3 // java.nio.channels.SocketChannel channel
        27: .line 207
            goto 36
      StackMap locals: org.xnio.nio.WorkerThread$2 int int
      StackMap stack: java.io.IOException
        28: astore 3 /* e */
        start local 3 // java.io.IOException e
        29: .line 208
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$futureResult:Lorg/xnio/FutureResult;
            aload 3 /* e */
            invokevirtual org.xnio.FutureResult.setException:(Ljava/io/IOException;)Z
            pop
        end local 3 // java.io.IOException e
        30: .line 210
            iload 2 /* ok */
            ifne 38
        31: .line 211
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
            goto 38
        32: .line 209
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        33: .line 210
            iload 2 /* ok */
            ifne 35
        34: .line 211
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        35: .line 213
      StackMap locals: org.xnio.nio.WorkerThread$2 int int top top top top java.lang.Throwable
      StackMap stack:
            aload 7
            athrow
        36: .line 210
      StackMap locals: org.xnio.nio.WorkerThread$2 int int
      StackMap stack:
            iload 2 /* ok */
            ifne 38
        37: .line 211
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$serverChannel:Ljava/nio/channels/ServerSocketChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        38: .line 214
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean ok
        end local 1 // int ops
        end local 0 // org.xnio.nio.WorkerThread$2 this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   39     0          this  Lorg/xnio/nio/WorkerThread$2;
            0   39     1           ops  I
            1   39     2            ok  Z
            2   27     3       channel  Ljava/nio/channels/SocketChannel;
           16   22     4  selectionKey  Ljava/nio/channels/SelectionKey;
           17   22     5    connection  Lorg/xnio/nio/NioSocketStreamConnection;
           29   30     3             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    23      23  any
           1     4      28  Class java.io.IOException
           7    27      28  Class java.io.IOException
           1     4      32  any
           7    30      32  any
    MethodParameters:
      Name  Flags
      ops   final

  void terminated();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.xnio.nio.WorkerThread$2 this
         0: .line 217
            return
        end local 0 // org.xnio.nio.WorkerThread$2 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/nio/WorkerThread$2;

  void forceTermination();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.nio.WorkerThread$2 this
         0: .line 220
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread$2.val$futureResult:Lorg/xnio/FutureResult;
            invokevirtual org.xnio.FutureResult.setCancelled:()Z
            pop
         1: .line 221
            return
        end local 0 // org.xnio.nio.WorkerThread$2 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/xnio/nio/WorkerThread$2;
}
SourceFile: "WorkerThread.java"
EnclosingMethod: org.xnio.nio.WorkerThread.acceptTcpStreamConnection:(Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
NestHost: org.xnio.nio.WorkerThread
InnerClasses:
  org.xnio.nio.WorkerThread$2