final class org.xnio.nio.WorkerThread extends org.xnio.XnioIoThread implements org.xnio.XnioExecutor
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.xnio.nio.WorkerThread
  super_class: org.xnio.XnioIoThread
{
  private static final long LONGEST_DELAY;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 9223372036853

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

  private static final boolean OLD_LOCKING;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean THREAD_SAFE_SELECTION_KEYS;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long START_TIME;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.nio.channels.Selector selector;
    descriptor: Ljava/nio/channels/Selector;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object workLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Queue<java.lang.Runnable> selectorWorkQueue;
    descriptor: Ljava/util/Queue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Queue<Ljava/lang/Runnable;>;

  private final java.util.TreeSet<org.xnio.nio.WorkerThread$TimeKey> delayWorkQueue;
    descriptor: Ljava/util/TreeSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;

  private volatile int state;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final int SHUTDOWN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -2147483648

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<org.xnio.nio.WorkerThread> stateUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lorg/xnio/nio/WorkerThread;>;

  volatile boolean polling;
    descriptor: Z
    flags: (0x0040) ACC_VOLATILE

  static final java.util.concurrent.atomic.AtomicLong seqGen;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  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=4, locals=0, args_size=0
         0: .line 79
            ldc Lorg/xnio/nio/WorkerThread;
            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 org.xnio.nio.WorkerThread.$assertionsDisabled:Z
         3: .line 81
            ldc Lorg/xnio/nio/WorkerThread;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            putstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
         4: .line 84
            invokestatic java.lang.System.nanoTime:()J
            putstatic org.xnio.nio.WorkerThread.START_TIME:J
         5: .line 96
            ldc Lorg/xnio/nio/WorkerThread;
            ldc "state"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic org.xnio.nio.WorkerThread.stateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
         6: .line 99
            new org.xnio.ReadPropertyAction
            dup
            ldc "xnio.nio.old-locking"
            ldc "false"
            invokespecial org.xnio.ReadPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            putstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
         7: .line 100
            new org.xnio.ReadPropertyAction
            dup
            ldc "xnio.nio.thread-safe-selection-keys"
            ldc "false"
            invokespecial org.xnio.ReadPropertyAction.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            putstatic org.xnio.nio.WorkerThread.THREAD_SAFE_SELECTION_KEYS:Z
         8: .line 857
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putstatic org.xnio.nio.WorkerThread.seqGen:Ljava/util/concurrent/atomic/AtomicLong;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.xnio.nio.NioXnioWorker, java.nio.channels.Selector, java.lang.String, java.lang.ThreadGroup, long, int);
    descriptor: (Lorg/xnio/nio/NioXnioWorker;Ljava/nio/channels/Selector;Ljava/lang/String;Ljava/lang/ThreadGroup;JI)V
    flags: (0x0000) 
    Code:
      stack=7, locals=8, args_size=7
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // org.xnio.nio.NioXnioWorker worker
        start local 2 // java.nio.channels.Selector selector
        start local 3 // java.lang.String name
        start local 4 // java.lang.ThreadGroup group
        start local 5 // long stackSize
        start local 7 // int number
         0: .line 104
            aload 0 /* this */
            aload 1 /* worker */
            iload 7 /* number */
            aload 4 /* group */
            aload 3 /* name */
            lload 5 /* stackSize */
            invokespecial org.xnio.XnioIoThread.<init>:(Lorg/xnio/XnioWorker;ILjava/lang/ThreadGroup;Ljava/lang/String;J)V
         1: .line 87
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
         2: .line 89
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
         3: .line 90
            aload 0 /* this */
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            putfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
         4: .line 105
            aload 0 /* this */
            aload 2 /* selector */
            putfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
         5: .line 106
            return
        end local 7 // int number
        end local 5 // long stackSize
        end local 4 // java.lang.ThreadGroup group
        end local 3 // java.lang.String name
        end local 2 // java.nio.channels.Selector selector
        end local 1 // org.xnio.nio.NioXnioWorker worker
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/xnio/nio/WorkerThread;
            0    6     1     worker  Lorg/xnio/nio/NioXnioWorker;
            0    6     2   selector  Ljava/nio/channels/Selector;
            0    6     3       name  Ljava/lang/String;
            0    6     4      group  Ljava/lang/ThreadGroup;
            0    6     5  stackSize  J
            0    6     7     number  I
    MethodParameters:
           Name  Flags
      worker     final
      selector   final
      name       final
      group      final
      stackSize  final
      number     final

  static org.xnio.nio.WorkerThread getCurrent();
    descriptor: ()Lorg/xnio/nio/WorkerThread;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 109
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            astore 0 /* thread */
        start local 0 // java.lang.Thread thread
         1: .line 110
            aload 0 /* thread */
            instanceof org.xnio.nio.WorkerThread
            ifeq 2
            aload 0 /* thread */
            checkcast org.xnio.nio.WorkerThread
            goto 3
      StackMap locals: java.lang.Thread
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: org.xnio.nio.WorkerThread
         3: areturn
        end local 0 // java.lang.Thread thread
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    4     0  thread  Ljava/lang/Thread;

  public org.xnio.nio.NioXnioWorker getWorker();
    descriptor: ()Lorg/xnio/nio/NioXnioWorker;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 114
            aload 0 /* this */
            invokespecial org.xnio.XnioIoThread.getWorker:()Lorg/xnio/XnioWorker;
            checkcast org.xnio.nio.NioXnioWorker
            areturn
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/nio/WorkerThread;

  protected org.xnio.IoFuture<org.xnio.StreamConnection> acceptTcpStreamConnection(java.net.InetSocketAddress, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap);
    descriptor: (Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=12, args_size=5
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.net.InetSocketAddress destination
        start local 2 // org.xnio.ChannelListener openListener
        start local 3 // org.xnio.ChannelListener bindListener
        start local 4 // org.xnio.OptionMap optionMap
         0: .line 119
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         1: .line 120
            goto 4
      StackMap locals:
      StackMap stack: org.xnio.ClosedWorkerException
         2: astore 5 /* e */
        start local 5 // org.xnio.ClosedWorkerException e
         3: .line 121
            new org.xnio.FailedIoFuture
            dup
            aload 5 /* e */
            invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
            areturn
        end local 5 // org.xnio.ClosedWorkerException e
         4: .line 123
      StackMap locals:
      StackMap stack:
            new org.xnio.FutureResult
            dup
            aload 0 /* this */
            invokespecial org.xnio.FutureResult.<init>:(Ljava/util/concurrent/Executor;)V
            astore 5 /* futureResult */
        start local 5 // org.xnio.FutureResult futureResult
         5: .line 125
            iconst_0
            istore 6 /* ok */
        start local 6 // boolean ok
         6: .line 126
            invokestatic java.nio.channels.ServerSocketChannel.open:()Ljava/nio/channels/ServerSocketChannel;
            astore 7 /* serverChannel */
        start local 7 // java.nio.channels.ServerSocketChannel serverChannel
         7: .line 128
            aload 7 /* serverChannel */
            iconst_0
            invokevirtual java.nio.channels.ServerSocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         8: .line 129
            aload 4 /* optionMap */
            getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 10
         9: .line 130
            aload 7 /* serverChannel */
            invokevirtual java.nio.channels.ServerSocketChannel.socket:()Ljava/net/ServerSocket;
            aload 4 /* optionMap */
            getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokevirtual java.net.ServerSocket.setReceiveBufferSize:(I)V
        10: .line 132
      StackMap locals: org.xnio.FutureResult int java.nio.channels.ServerSocketChannel
      StackMap stack:
            aload 7 /* serverChannel */
            invokevirtual java.nio.channels.ServerSocketChannel.socket:()Ljava/net/ServerSocket;
            aload 4 /* optionMap */
            getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
            iconst_1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            invokevirtual java.net.ServerSocket.setReuseAddress:(Z)V
        11: .line 133
            aload 7 /* serverChannel */
            aload 1 /* destination */
            invokevirtual java.nio.channels.ServerSocketChannel.bind:(Ljava/net/SocketAddress;)Ljava/nio/channels/ServerSocketChannel;
            pop
        12: .line 134
            aload 3 /* bindListener */
            ifnull 15
            new org.xnio.nio.WorkerThread$1
            dup
            aload 0 /* this */
            aload 7 /* serverChannel */
            invokespecial org.xnio.nio.WorkerThread$1.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/ServerSocketChannel;)V
        13: .line 175
            aload 3 /* bindListener */
        14: .line 134
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
        15: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* serverChannel */
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 8 /* key */
        start local 8 // java.nio.channels.SelectionKey key
        16: .line 177
            new org.xnio.nio.WorkerThread$2
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 8 /* key */
            aload 7 /* serverChannel */
            aload 4 /* optionMap */
            aload 5 /* futureResult */
            aload 2 /* openListener */
            invokespecial org.xnio.nio.WorkerThread$2.<init>:(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
            astore 9 /* handle */
        start local 9 // org.xnio.nio.NioHandle handle
        17: .line 223
            aload 8 /* key */
            aload 9 /* handle */
            invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 224
            aload 9 /* handle */
            bipush 16
            invokevirtual org.xnio.nio.NioHandle.resume:(I)V
        19: .line 225
            iconst_1
            istore 6 /* ok */
        20: .line 226
            aload 5 /* futureResult */
            new org.xnio.nio.WorkerThread$3
            dup
            aload 0 /* this */
            aload 5 /* futureResult */
            aload 7 /* serverChannel */
            invokespecial org.xnio.nio.WorkerThread$3.<init>:(Lorg/xnio/nio/WorkerThread;Lorg/xnio/FutureResult;Ljava/nio/channels/ServerSocketChannel;)V
            invokevirtual org.xnio.FutureResult.addCancelHandler:(Lorg/xnio/Cancellable;)V
        21: .line 234
            aload 5 /* futureResult */
            invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
            astore 11
        22: .line 236
            iload 6 /* ok */
            ifne 23
            aload 7 /* serverChannel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        23: .line 234
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel java.nio.channels.SelectionKey org.xnio.nio.NioHandle top org.xnio.IoFuture
      StackMap stack:
            aload 11
            areturn
        end local 9 // org.xnio.nio.NioHandle handle
        end local 8 // java.nio.channels.SelectionKey key
        24: .line 235
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel
      StackMap stack: java.lang.Throwable
            astore 10
        25: .line 236
            iload 6 /* ok */
            ifne 26
            aload 7 /* serverChannel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        26: .line 237
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult int java.nio.channels.ServerSocketChannel top top java.lang.Throwable
      StackMap stack:
            aload 10
            athrow
        end local 7 // java.nio.channels.ServerSocketChannel serverChannel
        end local 6 // boolean ok
        27: .line 238
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap org.xnio.FutureResult
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
        28: .line 239
            new org.xnio.FailedIoFuture
            dup
            aload 6 /* e */
            invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
            areturn
        end local 6 // java.io.IOException e
        end local 5 // org.xnio.FutureResult futureResult
        end local 4 // org.xnio.OptionMap optionMap
        end local 3 // org.xnio.ChannelListener bindListener
        end local 2 // org.xnio.ChannelListener openListener
        end local 1 // java.net.InetSocketAddress destination
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0           this  Lorg/xnio/nio/WorkerThread;
            0   29     1    destination  Ljava/net/InetSocketAddress;
            0   29     2   openListener  Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
            0   29     3   bindListener  Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
            0   29     4      optionMap  Lorg/xnio/OptionMap;
            3    4     5              e  Lorg/xnio/ClosedWorkerException;
            5   29     5   futureResult  Lorg/xnio/FutureResult<Lorg/xnio/StreamConnection;>;
            6   27     6             ok  Z
            7   27     7  serverChannel  Ljava/nio/channels/ServerSocketChannel;
           16   24     8            key  Ljava/nio/channels/SelectionKey;
           17   24     9         handle  Lorg/xnio/nio/NioHandle;
           28   29     6              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.xnio.ClosedWorkerException
           7    22      24  any
           5    23      27  Class java.io.IOException
          24    27      27  Class java.io.IOException
    Signature: (Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture<Lorg/xnio/StreamConnection;>;
    MethodParameters:
              Name  Flags
      destination   final
      openListener  final
      bindListener  final
      optionMap     final

  protected org.xnio.IoFuture<org.xnio.StreamConnection> openTcpStreamConnection(java.net.InetSocketAddress, java.net.InetSocketAddress, org.xnio.ChannelListener<? super org.xnio.StreamConnection>, org.xnio.ChannelListener<? super org.xnio.channels.BoundChannel>, org.xnio.OptionMap);
    descriptor: (Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener;Lorg/xnio/ChannelListener;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=14, args_size=6
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.net.InetSocketAddress bindAddress
        start local 2 // java.net.InetSocketAddress destinationAddress
        start local 3 // org.xnio.ChannelListener openListener
        start local 4 // org.xnio.ChannelListener bindListener
        start local 5 // org.xnio.OptionMap optionMap
         0: .line 245
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         1: .line 246
            goto 4
      StackMap locals:
      StackMap stack: org.xnio.ClosedWorkerException
         2: astore 6 /* e */
        start local 6 // org.xnio.ClosedWorkerException e
         3: .line 247
            new org.xnio.FailedIoFuture
            dup
            aload 6 /* e */
            invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
            areturn
        end local 6 // org.xnio.ClosedWorkerException e
         4: .line 250
      StackMap locals:
      StackMap stack:
            invokestatic java.nio.channels.SocketChannel.open:()Ljava/nio/channels/SocketChannel;
            astore 6 /* channel */
        start local 6 // java.nio.channels.SocketChannel channel
         5: .line 251
            iconst_0
            istore 7 /* ok */
        start local 7 // boolean ok
         6: .line 253
            aload 6 /* channel */
            iconst_0
            invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         7: .line 254
            aload 5 /* optionMap */
            getstatic org.xnio.Options.TCP_OOB_INLINE:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 8
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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
         8: .line 255
      StackMap locals: java.nio.channels.SocketChannel int
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.TCP_NODELAY:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 9
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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
         9: .line 256
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.IP_TRAFFIC_CLASS:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 10
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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
        10: .line 257
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.CLOSE_ABORT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 11
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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
        11: .line 258
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.KEEP_ALIVE:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 12
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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
        12: .line 259
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 13
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* optionMap */
            getstatic org.xnio.Options.RECEIVE_BUFFER:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokevirtual java.net.Socket.setReceiveBufferSize:(I)V
        13: .line 260
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 14
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* optionMap */
            getstatic org.xnio.Options.REUSE_ADDRESSES:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            invokevirtual java.net.Socket.setReuseAddress:(Z)V
        14: .line 261
      StackMap locals:
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.SEND_BUFFER:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 15
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 5 /* 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 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* channel */
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 8 /* key */
        start local 8 // java.nio.channels.SelectionKey key
        16: .line 263
            new org.xnio.nio.NioSocketStreamConnection
            dup
            aload 0 /* this */
            aload 8 /* key */
            aconst_null
            invokespecial org.xnio.nio.NioSocketStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Lorg/xnio/nio/ChannelClosed;)V
            astore 9 /* connection */
        start local 9 // org.xnio.nio.NioSocketStreamConnection connection
        17: .line 264
            aload 5 /* optionMap */
            getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 18
            aload 9 /* connection */
            getstatic org.xnio.Options.READ_TIMEOUT:Lorg/xnio/Option;
            aload 5 /* 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 265
      StackMap locals: java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection
      StackMap stack:
            aload 5 /* optionMap */
            getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
            invokevirtual org.xnio.OptionMap.contains:(Lorg/xnio/Option;)Z
            ifeq 19
            aload 9 /* connection */
            getstatic org.xnio.Options.WRITE_TIMEOUT:Lorg/xnio/Option;
            aload 5 /* 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 266
      StackMap locals:
      StackMap stack:
            aload 1 /* bindAddress */
            ifnonnull 20
            aload 4 /* bindListener */
            ifnull 22
        20: .line 267
      StackMap locals:
      StackMap stack:
            aload 6 /* channel */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 1 /* bindAddress */
            invokevirtual java.net.Socket.bind:(Ljava/net/SocketAddress;)V
        21: .line 268
            aload 9 /* connection */
            aload 4 /* bindListener */
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
        22: .line 270
      StackMap locals:
      StackMap stack:
            aload 6 /* channel */
            aload 2 /* destinationAddress */
            invokevirtual java.nio.channels.SocketChannel.connect:(Ljava/net/SocketAddress;)Z
            ifeq 30
        23: .line 271
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Synchronous connect"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
        24: .line 272
            aload 0 /* this */
            aload 9 /* connection */
            aload 3 /* openListener */
            invokestatic org.xnio.ChannelListeners.getChannelListenerTask:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Ljava/lang/Runnable;
            invokevirtual org.xnio.nio.WorkerThread.execute:(Ljava/lang/Runnable;)V
        25: .line 273
            new org.xnio.FinishedIoFuture
            dup
            aload 9 /* connection */
            invokespecial org.xnio.FinishedIoFuture.<init>:(Ljava/lang/Object;)V
            astore 10 /* finishedIoFuture */
        start local 10 // org.xnio.FinishedIoFuture finishedIoFuture
        26: .line 274
            iconst_1
            istore 7 /* ok */
        27: .line 275
            aload 10 /* finishedIoFuture */
            astore 13
        28: .line 293
            iload 7 /* ok */
            ifne 29
            aload 6 /* channel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        29: .line 275
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection org.xnio.FinishedIoFuture top top org.xnio.IoFuture
      StackMap stack:
            aload 13
            areturn
        end local 10 // org.xnio.FinishedIoFuture finishedIoFuture
        30: .line 277
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection
      StackMap stack:
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Asynchronous connect"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
        31: .line 278
            new org.xnio.FutureResult
            dup
            aload 0 /* this */
            invokespecial org.xnio.FutureResult.<init>:(Ljava/util/concurrent/Executor;)V
            astore 10 /* futureResult */
        start local 10 // org.xnio.FutureResult futureResult
        32: .line 279
            new org.xnio.nio.WorkerThread$ConnectHandle
            dup
            aload 0 /* this */
            aload 8 /* key */
            aload 10 /* futureResult */
            aload 9 /* connection */
            aload 3 /* openListener */
            invokespecial org.xnio.nio.WorkerThread$ConnectHandle.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Lorg/xnio/FutureResult;Lorg/xnio/nio/NioSocketStreamConnection;Lorg/xnio/ChannelListener;)V
            astore 11 /* connectHandle */
        start local 11 // org.xnio.nio.WorkerThread$ConnectHandle connectHandle
        33: .line 280
            aload 8 /* key */
            aload 11 /* connectHandle */
            invokevirtual java.nio.channels.SelectionKey.attach:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        34: .line 281
            aload 10 /* futureResult */
            new org.xnio.nio.WorkerThread$4
            dup
            aload 0 /* this */
            aload 10 /* futureResult */
            aload 9 /* connection */
            invokespecial org.xnio.nio.WorkerThread$4.<init>:(Lorg/xnio/nio/WorkerThread;Lorg/xnio/FutureResult;Lorg/xnio/nio/NioSocketStreamConnection;)V
            invokevirtual org.xnio.FutureResult.addCancelHandler:(Lorg/xnio/Cancellable;)V
        35: .line 289
            aload 11 /* connectHandle */
            bipush 8
            invokevirtual org.xnio.nio.WorkerThread$ConnectHandle.resume:(I)V
        36: .line 290
            iconst_1
            istore 7 /* ok */
        37: .line 291
            aload 10 /* futureResult */
            invokevirtual org.xnio.FutureResult.getIoFuture:()Lorg/xnio/IoFuture;
            astore 13
        38: .line 293
            iload 7 /* ok */
            ifne 39
            aload 6 /* channel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        39: .line 291
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int java.nio.channels.SelectionKey org.xnio.nio.NioSocketStreamConnection org.xnio.FutureResult org.xnio.nio.WorkerThread$ConnectHandle top org.xnio.IoFuture
      StackMap stack:
            aload 13
            areturn
        end local 11 // org.xnio.nio.WorkerThread$ConnectHandle connectHandle
        end local 10 // org.xnio.FutureResult futureResult
        end local 9 // org.xnio.nio.NioSocketStreamConnection connection
        end local 8 // java.nio.channels.SelectionKey key
        40: .line 292
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int
      StackMap stack: java.lang.Throwable
            astore 12
        41: .line 293
            iload 7 /* ok */
            ifne 42
            aload 6 /* channel */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        42: .line 294
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap java.nio.channels.SocketChannel int top top top top java.lang.Throwable
      StackMap stack:
            aload 12
            athrow
        end local 7 // boolean ok
        end local 6 // java.nio.channels.SocketChannel channel
        43: .line 295
      StackMap locals: org.xnio.nio.WorkerThread java.net.InetSocketAddress java.net.InetSocketAddress org.xnio.ChannelListener org.xnio.ChannelListener org.xnio.OptionMap
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
        44: .line 296
            new org.xnio.FailedIoFuture
            dup
            aload 6 /* e */
            invokespecial org.xnio.FailedIoFuture.<init>:(Ljava/io/IOException;)V
            areturn
        end local 6 // java.io.IOException e
        end local 5 // org.xnio.OptionMap optionMap
        end local 4 // org.xnio.ChannelListener bindListener
        end local 3 // org.xnio.ChannelListener openListener
        end local 2 // java.net.InetSocketAddress destinationAddress
        end local 1 // java.net.InetSocketAddress bindAddress
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   45     0                this  Lorg/xnio/nio/WorkerThread;
            0   45     1         bindAddress  Ljava/net/InetSocketAddress;
            0   45     2  destinationAddress  Ljava/net/InetSocketAddress;
            0   45     3        openListener  Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
            0   45     4        bindListener  Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;
            0   45     5           optionMap  Lorg/xnio/OptionMap;
            3    4     6                   e  Lorg/xnio/ClosedWorkerException;
            5   43     6             channel  Ljava/nio/channels/SocketChannel;
            6   43     7                  ok  Z
           16   40     8                 key  Ljava/nio/channels/SelectionKey;
           17   40     9          connection  Lorg/xnio/nio/NioSocketStreamConnection;
           26   30    10    finishedIoFuture  Lorg/xnio/FinishedIoFuture<Lorg/xnio/StreamConnection;>;
           32   40    10        futureResult  Lorg/xnio/FutureResult<Lorg/xnio/StreamConnection;>;
           33   40    11       connectHandle  Lorg/xnio/nio/WorkerThread$ConnectHandle;
           44   45     6                   e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.xnio.ClosedWorkerException
           6    28      40  any
          30    38      40  any
           4    29      43  Class java.io.IOException
          30    39      43  Class java.io.IOException
          40    43      43  Class java.io.IOException
    Signature: (Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;Lorg/xnio/ChannelListener<-Lorg/xnio/channels/BoundChannel;>;Lorg/xnio/OptionMap;)Lorg/xnio/IoFuture<Lorg/xnio/StreamConnection;>;
    MethodParameters:
                    Name  Flags
      bindAddress         final
      destinationAddress  final
      openListener        final
      bindListener        final
      optionMap           final

  org.xnio.nio.WorkerThread getNextThread();
    descriptor: ()Lorg/xnio/nio/WorkerThread;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 301
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.getAll:()[Lorg/xnio/nio/WorkerThread;
            astore 1 /* all */
        start local 1 // org.xnio.nio.WorkerThread[] all
         1: .line 302
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getNumber:()I
            istore 2 /* number */
        start local 2 // int number
         2: .line 303
            iload 2 /* number */
            aload 1 /* all */
            arraylength
            iconst_1
            isub
            if_icmpne 4
         3: .line 304
            aload 1 /* all */
            iconst_0
            aaload
            areturn
         4: .line 306
      StackMap locals: org.xnio.nio.WorkerThread[] int
      StackMap stack:
            aload 1 /* all */
            iload 2 /* number */
            iconst_1
            iadd
            aaload
            areturn
        end local 2 // int number
        end local 1 // org.xnio.nio.WorkerThread[] all
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/xnio/nio/WorkerThread;
            1    5     1     all  [Lorg/xnio/nio/WorkerThread;
            2    5     2  number  I

  private static org.xnio.nio.WorkerThread getPeerThread(org.xnio.XnioIoFactory);
    descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.xnio.XnioIoFactory peer
         0: .line 362
            aload 0 /* peer */
            instanceof org.xnio.nio.NioXnioWorker
            ifeq 5
         1: .line 363
            aload 0 /* peer */
            checkcast org.xnio.nio.NioXnioWorker
            astore 2 /* peerWorker */
        start local 2 // org.xnio.nio.NioXnioWorker peerWorker
         2: .line 364
            aload 2 /* peerWorker */
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         3: .line 365
            aload 2 /* peerWorker */
            invokevirtual org.xnio.nio.NioXnioWorker.chooseThread:()Lorg/xnio/nio/WorkerThread;
            astore 1 /* peerThread */
        end local 2 // org.xnio.nio.NioXnioWorker peerWorker
        start local 1 // org.xnio.nio.WorkerThread peerThread
         4: .line 366
            goto 10
        end local 1 // org.xnio.nio.WorkerThread peerThread
      StackMap locals:
      StackMap stack:
         5: aload 0 /* peer */
            instanceof org.xnio.nio.WorkerThread
            ifeq 9
         6: .line 367
            aload 0 /* peer */
            checkcast org.xnio.nio.WorkerThread
            astore 1 /* peerThread */
        start local 1 // org.xnio.nio.WorkerThread peerThread
         7: .line 368
            aload 1 /* peerThread */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         8: .line 369
            goto 10
        end local 1 // org.xnio.nio.WorkerThread peerThread
         9: .line 370
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            invokeinterface org.xnio.nio.Log.notNioProvider:()Ljava/lang/IllegalArgumentException;
            athrow
        start local 1 // org.xnio.nio.WorkerThread peerThread
        10: .line 372
      StackMap locals: org.xnio.nio.WorkerThread
      StackMap stack:
            aload 1 /* peerThread */
            areturn
        end local 1 // org.xnio.nio.WorkerThread peerThread
        end local 0 // org.xnio.XnioIoFactory peer
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        peer  Lorg/xnio/XnioIoFactory;
            4    5     1  peerThread  Lorg/xnio/nio/WorkerThread;
            7    9     1  peerThread  Lorg/xnio/nio/WorkerThread;
           10   11     1  peerThread  Lorg/xnio/nio/WorkerThread;
            2    4     2  peerWorker  Lorg/xnio/nio/NioXnioWorker;
    Exceptions:
      throws org.xnio.ClosedWorkerException
    MethodParameters:
      Name  Flags
      peer  final

  public org.xnio.ChannelPipe<org.xnio.StreamConnection, org.xnio.StreamConnection> createFullDuplexPipeConnection(org.xnio.XnioIoFactory);
    descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=16, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // org.xnio.XnioIoFactory peer
         0: .line 376
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         1: .line 377
            iconst_0
            istore 2 /* ok */
        start local 2 // boolean ok
         2: .line 378
            invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
            astore 3 /* topPipe */
        start local 3 // java.nio.channels.Pipe topPipe
         3: .line 380
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         4: .line 381
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         5: .line 382
            invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
            astore 4 /* bottomPipe */
        start local 4 // java.nio.channels.Pipe bottomPipe
         6: .line 384
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         7: .line 385
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         8: .line 386
            aload 1 /* peer */
            invokestatic org.xnio.nio.WorkerThread.getPeerThread:(Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
            astore 5 /* peerThread */
        start local 5 // org.xnio.nio.WorkerThread peerThread
         9: .line 387
            aload 0 /* this */
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 6 /* topSourceKey */
        start local 6 // java.nio.channels.SelectionKey topSourceKey
        10: .line 388
            aload 5 /* peerThread */
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 7 /* topSinkKey */
        start local 7 // java.nio.channels.SelectionKey topSinkKey
        11: .line 389
            aload 5 /* peerThread */
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 8 /* bottomSourceKey */
        start local 8 // java.nio.channels.SelectionKey bottomSourceKey
        12: .line 390
            aload 0 /* this */
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 9 /* bottomSinkKey */
        start local 9 // java.nio.channels.SelectionKey bottomSinkKey
        13: .line 391
            new org.xnio.nio.NioPipeStreamConnection
            dup
            aload 0 /* this */
            aload 8 /* bottomSourceKey */
            aload 7 /* topSinkKey */
            invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
            astore 10 /* leftConnection */
        start local 10 // org.xnio.nio.NioPipeStreamConnection leftConnection
        14: .line 392
            new org.xnio.nio.NioPipeStreamConnection
            dup
            aload 0 /* this */
            aload 6 /* topSourceKey */
            aload 9 /* bottomSinkKey */
            invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
            astore 11 /* rightConnection */
        start local 11 // org.xnio.nio.NioPipeStreamConnection rightConnection
        15: .line 393
            new org.xnio.ChannelPipe
            dup
            aload 10 /* leftConnection */
            aload 11 /* rightConnection */
            invokespecial org.xnio.ChannelPipe.<init>:(Lorg/xnio/channels/CloseableChannel;Lorg/xnio/channels/CloseableChannel;)V
            astore 12 /* result */
        start local 12 // org.xnio.ChannelPipe result
        16: .line 394
            iconst_1
            istore 2 /* ok */
        17: .line 395
            aload 12 /* result */
            astore 14
        18: .line 397
            iload 2 /* ok */
            ifne 21
        19: .line 398
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        20: .line 399
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        21: .line 403
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe org.xnio.nio.WorkerThread java.nio.channels.SelectionKey java.nio.channels.SelectionKey java.nio.channels.SelectionKey java.nio.channels.SelectionKey org.xnio.nio.NioPipeStreamConnection org.xnio.nio.NioPipeStreamConnection org.xnio.ChannelPipe top org.xnio.ChannelPipe
      StackMap stack:
            iload 2 /* ok */
            ifne 24
        22: .line 404
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        23: .line 405
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        24: .line 395
      StackMap locals:
      StackMap stack:
            aload 14
            areturn
        end local 12 // org.xnio.ChannelPipe result
        end local 11 // org.xnio.nio.NioPipeStreamConnection rightConnection
        end local 10 // org.xnio.nio.NioPipeStreamConnection leftConnection
        end local 9 // java.nio.channels.SelectionKey bottomSinkKey
        end local 8 // java.nio.channels.SelectionKey bottomSourceKey
        end local 7 // java.nio.channels.SelectionKey topSinkKey
        end local 6 // java.nio.channels.SelectionKey topSourceKey
        end local 5 // org.xnio.nio.WorkerThread peerThread
        25: .line 396
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe
      StackMap stack: java.lang.Throwable
            astore 13
        26: .line 397
            iload 2 /* ok */
            ifne 29
        27: .line 398
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        28: .line 399
            aload 4 /* bottomPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        29: .line 401
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe java.nio.channels.Pipe top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 13
            athrow
        end local 4 // java.nio.channels.Pipe bottomPipe
        30: .line 402
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe
      StackMap stack: java.lang.Throwable
            astore 15
        31: .line 403
            iload 2 /* ok */
            ifne 34
        32: .line 404
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        33: .line 405
            aload 3 /* topPipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        34: .line 407
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory int java.nio.channels.Pipe top top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 15
            athrow
        end local 3 // java.nio.channels.Pipe topPipe
        end local 2 // boolean ok
        end local 1 // org.xnio.XnioIoFactory peer
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   35     0             this  Lorg/xnio/nio/WorkerThread;
            0   35     1             peer  Lorg/xnio/XnioIoFactory;
            2   35     2               ok  Z
            3   35     3          topPipe  Ljava/nio/channels/Pipe;
            6   30     4       bottomPipe  Ljava/nio/channels/Pipe;
            9   25     5       peerThread  Lorg/xnio/nio/WorkerThread;
           10   25     6     topSourceKey  Ljava/nio/channels/SelectionKey;
           11   25     7       topSinkKey  Ljava/nio/channels/SelectionKey;
           12   25     8  bottomSourceKey  Ljava/nio/channels/SelectionKey;
           13   25     9    bottomSinkKey  Ljava/nio/channels/SelectionKey;
           14   25    10   leftConnection  Lorg/xnio/nio/NioPipeStreamConnection;
           15   25    11  rightConnection  Lorg/xnio/nio/NioPipeStreamConnection;
           16   25    12           result  Lorg/xnio/ChannelPipe<Lorg/xnio/StreamConnection;Lorg/xnio/StreamConnection;>;
      Exception table:
        from    to  target  type
           6    18      25  any
           3    21      30  any
          25    30      30  any
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe<Lorg/xnio/StreamConnection;Lorg/xnio/StreamConnection;>;
    MethodParameters:
      Name  Flags
      peer  

  public org.xnio.ChannelPipe<org.xnio.channels.StreamSourceChannel, org.xnio.channels.StreamSinkChannel> createHalfDuplexPipe(org.xnio.XnioIoFactory);
    descriptor: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // org.xnio.XnioIoFactory peer
         0: .line 411
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.checkShutdown:()V
         1: .line 412
            invokestatic java.nio.channels.Pipe.open:()Ljava/nio/channels/Pipe;
            astore 2 /* pipe */
        start local 2 // java.nio.channels.Pipe pipe
         2: .line 413
            iconst_0
            istore 3 /* ok */
        start local 3 // boolean ok
         3: .line 415
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SourceChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         4: .line 416
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            iconst_0
            invokevirtual java.nio.channels.Pipe$SinkChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         5: .line 417
            aload 1 /* peer */
            invokestatic org.xnio.nio.WorkerThread.getPeerThread:(Lorg/xnio/XnioIoFactory;)Lorg/xnio/nio/WorkerThread;
            astore 4 /* peerThread */
        start local 4 // org.xnio.nio.WorkerThread peerThread
         6: .line 418
            aload 0 /* this */
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 5 /* readKey */
        start local 5 // java.nio.channels.SelectionKey readKey
         7: .line 419
            aload 4 /* peerThread */
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokevirtual org.xnio.nio.WorkerThread.registerChannel:(Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
            astore 6 /* writeKey */
        start local 6 // java.nio.channels.SelectionKey writeKey
         8: .line 420
            new org.xnio.nio.NioPipeStreamConnection
            dup
            aload 0 /* this */
            aload 5 /* readKey */
            aconst_null
            invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
            astore 7 /* leftConnection */
        start local 7 // org.xnio.nio.NioPipeStreamConnection leftConnection
         9: .line 421
            new org.xnio.nio.NioPipeStreamConnection
            dup
            aload 0 /* this */
            aconst_null
            aload 6 /* writeKey */
            invokespecial org.xnio.nio.NioPipeStreamConnection.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/nio/channels/SelectionKey;Ljava/nio/channels/SelectionKey;)V
            astore 8 /* rightConnection */
        start local 8 // org.xnio.nio.NioPipeStreamConnection rightConnection
        10: .line 422
            aload 7 /* leftConnection */
            invokevirtual org.xnio.nio.NioPipeStreamConnection.writeClosed:()Z
            pop
        11: .line 423
            aload 8 /* rightConnection */
            invokevirtual org.xnio.nio.NioPipeStreamConnection.readClosed:()Z
            pop
        12: .line 424
            new org.xnio.ChannelPipe
            dup
            aload 7 /* leftConnection */
            invokevirtual org.xnio.nio.NioPipeStreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            aload 8 /* rightConnection */
            invokevirtual org.xnio.nio.NioPipeStreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokespecial org.xnio.ChannelPipe.<init>:(Lorg/xnio/channels/CloseableChannel;Lorg/xnio/channels/CloseableChannel;)V
            astore 9 /* result */
        start local 9 // org.xnio.ChannelPipe result
        13: .line 425
            iconst_1
            istore 3 /* ok */
        14: .line 426
            aload 9 /* result */
            astore 11
        15: .line 428
            iload 3 /* ok */
            ifne 18
        16: .line 429
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        17: .line 430
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        18: .line 426
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int org.xnio.nio.WorkerThread java.nio.channels.SelectionKey java.nio.channels.SelectionKey org.xnio.nio.NioPipeStreamConnection org.xnio.nio.NioPipeStreamConnection org.xnio.ChannelPipe top org.xnio.ChannelPipe
      StackMap stack:
            aload 11
            areturn
        end local 9 // org.xnio.ChannelPipe result
        end local 8 // org.xnio.nio.NioPipeStreamConnection rightConnection
        end local 7 // org.xnio.nio.NioPipeStreamConnection leftConnection
        end local 6 // java.nio.channels.SelectionKey writeKey
        end local 5 // java.nio.channels.SelectionKey readKey
        end local 4 // org.xnio.nio.WorkerThread peerThread
        19: .line 427
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int
      StackMap stack: java.lang.Throwable
            astore 10
        20: .line 428
            iload 3 /* ok */
            ifne 23
        21: .line 429
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.sink:()Ljava/nio/channels/Pipe$SinkChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        22: .line 430
            aload 2 /* pipe */
            invokevirtual java.nio.channels.Pipe.source:()Ljava/nio/channels/Pipe$SourceChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        23: .line 432
      StackMap locals: org.xnio.nio.WorkerThread org.xnio.XnioIoFactory java.nio.channels.Pipe int top top top top top top java.lang.Throwable
      StackMap stack:
            aload 10
            athrow
        end local 3 // boolean ok
        end local 2 // java.nio.channels.Pipe pipe
        end local 1 // org.xnio.XnioIoFactory peer
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   24     0             this  Lorg/xnio/nio/WorkerThread;
            0   24     1             peer  Lorg/xnio/XnioIoFactory;
            2   24     2             pipe  Ljava/nio/channels/Pipe;
            3   24     3               ok  Z
            6   19     4       peerThread  Lorg/xnio/nio/WorkerThread;
            7   19     5          readKey  Ljava/nio/channels/SelectionKey;
            8   19     6         writeKey  Ljava/nio/channels/SelectionKey;
            9   19     7   leftConnection  Lorg/xnio/nio/NioPipeStreamConnection;
           10   19     8  rightConnection  Lorg/xnio/nio/NioPipeStreamConnection;
           13   19     9           result  Lorg/xnio/ChannelPipe<Lorg/xnio/channels/StreamSourceChannel;Lorg/xnio/channels/StreamSinkChannel;>;
      Exception table:
        from    to  target  type
           3    15      19  any
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/xnio/XnioIoFactory;)Lorg/xnio/ChannelPipe<Lorg/xnio/channels/StreamSourceChannel;Lorg/xnio/channels/StreamSinkChannel;>;
    MethodParameters:
      Name  Flags
      peer  final

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=19, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 438
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            astore 1 /* selector */
        start local 1 // java.nio.channels.Selector selector
         1: .line 440
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Starting worker thread %s"
            aload 0 /* this */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 441
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
            astore 2 /* lock */
        start local 2 // java.lang.Object lock
         3: .line 442
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
            astore 3 /* workQueue */
        start local 3 // java.util.Queue workQueue
         4: .line 443
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
            astore 4 /* delayQueue */
        start local 4 // java.util.TreeSet delayQueue
         5: .line 444
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Started channel thread '%s', selector %s"
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            invokevirtual org.xnio.XnioIoThread.getName:()Ljava/lang/String;
            aload 1 /* selector */
            invokeinterface org.xnio.nio.Log.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 447
            ldc 9223372036854775807
            lstore 7 /* delayTime */
        start local 7 // long delayTime
         7: .line 449
            bipush 16
            anewarray java.nio.channels.SelectionKey
            astore 10 /* keys */
        start local 10 // java.nio.channels.SelectionKey[] keys
         8: .line 455
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet top top long top java.nio.channels.SelectionKey[]
      StackMap stack:
            aload 2 /* lock */
            dup
            astore 13
            monitorenter
         9: .line 456
            aload 3 /* workQueue */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 5 /* task */
        start local 5 // java.lang.Runnable task
        10: .line 457
            aload 5 /* task */
            ifnonnull 24
        11: .line 458
            aload 4 /* delayQueue */
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 6 /* iterator */
        start local 6 // java.util.Iterator iterator
        12: .line 459
            ldc 9223372036854775807
            lstore 7 /* delayTime */
        13: .line 460
            aload 6 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 23
        14: .line 461
            invokestatic java.lang.System.nanoTime:()J
            lstore 14 /* now */
        start local 14 // long now
        15: .line 463
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable java.util.Iterator long top java.nio.channels.SelectionKey[] top top java.lang.Object long
      StackMap stack:
            aload 6 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.xnio.nio.WorkerThread$TimeKey
            astore 16 /* key */
        start local 16 // org.xnio.nio.WorkerThread$TimeKey key
        16: .line 464
            aload 16 /* key */
            getfield org.xnio.nio.WorkerThread$TimeKey.deadline:J
            lload 14 /* now */
            getstatic org.xnio.nio.WorkerThread.START_TIME:J
            lsub
            lcmp
            ifgt 20
        17: .line 465
            aload 3 /* workQueue */
            aload 16 /* key */
            getfield org.xnio.nio.WorkerThread$TimeKey.command:Ljava/lang/Runnable;
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
        18: .line 466
            aload 6 /* iterator */
            invokeinterface java.util.Iterator.remove:()V
        19: .line 467
            goto 22
        20: .line 468
      StackMap locals: org.xnio.nio.WorkerThread$TimeKey
      StackMap stack:
            aload 16 /* key */
            getfield org.xnio.nio.WorkerThread$TimeKey.deadline:J
            lload 14 /* now */
            getstatic org.xnio.nio.WorkerThread.START_TIME:J
            lsub
            lsub
            lstore 7 /* delayTime */
        21: .line 470
            goto 23
        end local 16 // org.xnio.nio.WorkerThread$TimeKey key
        22: .line 472
      StackMap locals:
      StackMap stack:
            aload 6 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 14 // long now
        23: .line 474
      StackMap locals:
      StackMap stack:
            aload 3 /* workQueue */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 5 /* task */
        end local 6 // java.util.Iterator iterator
        24: .line 455
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] top top java.lang.Object
      StackMap stack:
            aload 13
            monitorexit
        25: goto 28
        end local 5 // java.lang.Runnable task
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet top top long top java.nio.channels.SelectionKey[] top top java.lang.Object
      StackMap stack: java.lang.Throwable
        26: aload 13
            monitorexit
        27: athrow
        start local 5 // java.lang.Runnable task
        28: .line 478
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[]
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        29: .line 479
            aload 5 /* task */
            invokestatic org.xnio.nio.WorkerThread.safeRun:(Ljava/lang/Runnable;)V
        30: .line 480
            aload 5 /* task */
            ifnonnull 8
        31: .line 482
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.state:I
            istore 11 /* oldState */
        start local 11 // int oldState
        32: .line 483
            iload 11 /* oldState */
            ldc -2147483648
            iand
            ifeq 70
        33: .line 484
            aload 2 /* lock */
            dup
            astore 13
            monitorenter
        34: .line 485
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.keys:()Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            istore 12 /* keyCount */
        start local 12 // int keyCount
        35: .line 486
            aload 0 /* this */
            iload 12 /* keyCount */
            ldc -2147483648
            ior
            putfield org.xnio.nio.WorkerThread.state:I
        36: .line 487
            iload 12 /* keyCount */
            ifne 41
            aload 3 /* workQueue */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 41
        37: .line 489
            aload 13
            monitorexit
        38: .line 603
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Shutting down channel thread \"%s\""
            aload 0 /* this */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
        39: .line 604
            aload 1 /* selector */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/nio/channels/Selector;)V
        40: .line 605
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.closeResource:()V
            return
        41: .line 484
      StackMap locals: int int java.lang.Object
      StackMap stack:
            aload 13
            monitorexit
        42: goto 45
        end local 12 // int keyCount
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.lang.Object
      StackMap stack: java.lang.Throwable
        43: aload 13
            monitorexit
        44: athrow
        start local 12 // int keyCount
        45: .line 492
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int int
      StackMap stack:
            aload 1 /* selector */
            dup
            astore 13
            monitorenter
        46: .line 493
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.keys:()Ljava/util/Set;
            astore 14 /* keySet */
        start local 14 // java.util.Set keySet
        47: .line 494
            aload 14 /* keySet */
            dup
            astore 15
            monitorenter
        48: .line 495
            aload 14 /* keySet */
            aload 10 /* keys */
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.nio.channels.SelectionKey[]
            astore 10 /* keys */
        49: .line 496
            aload 10 /* keys */
            aload 14 /* keySet */
            invokeinterface java.util.Set.size:()I
            aload 10 /* keys */
            arraylength
            aconst_null
            invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
        50: .line 494
            aload 15
            monitorexit
        51: goto 54
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int int java.nio.channels.Selector java.util.Set java.util.Set
      StackMap stack: java.lang.Throwable
        52: aload 15
            monitorexit
        53: athrow
        end local 14 // java.util.Set keySet
        54: .line 492
      StackMap locals:
      StackMap stack:
            aload 13
            monitorexit
        55: goto 58
      StackMap locals:
      StackMap stack: java.lang.Throwable
        56: aload 13
            monitorexit
        57: athrow
        58: .line 500
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        59: goto 68
        60: .line 501
      StackMap locals: int
      StackMap stack:
            aload 10 /* keys */
            iload 13 /* i */
            aaload
            astore 14 /* key */
        start local 14 // java.nio.channels.SelectionKey key
        61: .line 502
            aload 14 /* key */
            ifnonnull 62
            goto 69
        62: .line 503
      StackMap locals: java.nio.channels.SelectionKey
      StackMap stack:
            aload 10 /* keys */
            iload 13 /* i */
            aconst_null
            aastore
        63: .line 504
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
            checkcast org.xnio.nio.NioHandle
            astore 15 /* attachment */
        start local 15 // org.xnio.nio.NioHandle attachment
        64: .line 505
            aload 15 /* attachment */
            ifnull 67
        65: .line 506
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        66: .line 507
            aload 15 /* attachment */
            invokevirtual org.xnio.nio.NioHandle.forceTermination:()V
        end local 15 // org.xnio.nio.NioHandle attachment
        end local 14 // java.nio.channels.SelectionKey key
        67: .line 500
      StackMap locals:
      StackMap stack:
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
        68: iload 13 /* i */
            aload 10 /* keys */
            arraylength
            if_icmplt 60
        end local 13 // int i
        69: .line 510
      StackMap locals:
      StackMap stack:
            aload 10 /* keys */
            iconst_0
            aload 10 /* keys */
            arraylength
            aconst_null
            invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
        end local 12 // int keyCount
        70: .line 513
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        71: .line 516
            iload 11 /* oldState */
            ldc -2147483648
            iand
            ifeq 75
        72: .line 517
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Beginning select on %s (shutdown in progress)"
            aload 1 /* selector */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
        73: .line 518
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.selectNow:()I
            pop
        74: .line 519
            goto 123
      StackMap locals:
      StackMap stack:
        75: lload 7 /* delayTime */
            ldc 9223372036854775807
            lcmp
            ifne 97
        76: .line 520
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Beginning select on %s"
            aload 1 /* selector */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
        77: .line 521
            aload 0 /* this */
            iconst_1
            putfield org.xnio.nio.WorkerThread.polling:Z
        78: .line 523
            aconst_null
            astore 13 /* item */
        start local 13 // java.lang.Runnable item
        79: .line 524
            aload 2 /* lock */
            dup
            astore 14
            monitorenter
        80: .line 525
            aload 3 /* workQueue */
            invokeinterface java.util.Queue.peek:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 13 /* item */
        81: .line 524
            aload 14
            monitorexit
        82: goto 85
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.lang.Runnable java.lang.Object
      StackMap stack: java.lang.Throwable
        83: aload 14
            monitorexit
        84: athrow
        85: .line 527
      StackMap locals:
      StackMap stack:
            aload 13 /* item */
            ifnull 89
        86: .line 528
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "SelectNow, queue is not empty"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
        87: .line 529
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.selectNow:()I
            pop
        88: .line 530
            goto 95
        89: .line 531
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Select, queue is empty"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
        90: .line 532
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.select:()I
            pop
        end local 13 // java.lang.Runnable item
        91: .line 534
            goto 95
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int
      StackMap stack: java.lang.Throwable
        92: astore 15
        93: .line 535
            aload 0 /* this */
            iconst_0
            putfield org.xnio.nio.WorkerThread.polling:Z
        94: .line 536
            aload 15
            athrow
        95: .line 535
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.xnio.nio.WorkerThread.polling:Z
        96: .line 537
            goto 123
        97: .line 538
      StackMap locals:
      StackMap stack:
            lconst_1
            lload 7 /* delayTime */
            ldc 1000000
            ldiv
            ladd
            lstore 13 /* millis */
        start local 13 // long millis
        98: .line 539
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Beginning select on %s (with timeout)"
            aload 1 /* selector */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
        99: .line 540
            aload 0 /* this */
            iconst_1
            putfield org.xnio.nio.WorkerThread.polling:Z
       100: .line 542
            aconst_null
            astore 15 /* item */
        start local 15 // java.lang.Runnable item
       101: .line 543
            aload 2 /* lock */
            dup
            astore 16
            monitorenter
       102: .line 544
            aload 3 /* workQueue */
            invokeinterface java.util.Queue.peek:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 15 /* item */
       103: .line 543
            aload 16
            monitorexit
       104: goto 107
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top long java.lang.Runnable java.lang.Object
      StackMap stack: java.lang.Throwable
       105: aload 16
            monitorexit
       106: athrow
       107: .line 546
      StackMap locals:
      StackMap stack:
            aload 15 /* item */
            ifnull 111
       108: .line 547
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "SelectNow, queue is not empty"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
       109: .line 548
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.selectNow:()I
            pop
       110: .line 549
            goto 117
       111: .line 550
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Select, queue is empty"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
       112: .line 551
            aload 1 /* selector */
            lload 13 /* millis */
            invokevirtual java.nio.channels.Selector.select:(J)I
            pop
        end local 15 // java.lang.Runnable item
       113: .line 553
            goto 117
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top long
      StackMap stack: java.lang.Throwable
       114: astore 17
       115: .line 554
            aload 0 /* this */
            iconst_0
            putfield org.xnio.nio.WorkerThread.polling:Z
       116: .line 555
            aload 17
            athrow
       117: .line 554
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.xnio.nio.WorkerThread.polling:Z
        end local 13 // long millis
       118: .line 557
            goto 123
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int
      StackMap stack: java.nio.channels.CancelledKeyException
       119: pop
       120: .line 559
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Spurious cancelled key exception"
            invokeinterface org.xnio.nio.Log.trace:(Ljava/lang/Object;)V
            goto 123
       121: .line 560
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 13 /* e */
        start local 13 // java.io.IOException e
       122: .line 561
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            aload 13 /* e */
            invokeinterface org.xnio.nio.Log.selectionError:(Ljava/io/IOException;)V
        end local 13 // java.io.IOException e
       123: .line 564
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Selected on %s"
            aload 1 /* selector */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
       124: .line 566
            aload 1 /* selector */
            dup
            astore 13
            monitorenter
       125: .line 567
            aload 1 /* selector */
            invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
            astore 9 /* selectedKeys */
        start local 9 // java.util.Set selectedKeys
       126: .line 568
            aload 9 /* selectedKeys */
            dup
            astore 14
            monitorenter
       127: .line 570
            aload 9 /* selectedKeys */
            aload 10 /* keys */
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.nio.channels.SelectionKey[]
            astore 10 /* keys */
       128: .line 571
            aload 10 /* keys */
            aload 9 /* selectedKeys */
            invokeinterface java.util.Set.size:()I
            aload 10 /* keys */
            arraylength
            aconst_null
            invokestatic java.util.Arrays.fill:([Ljava/lang/Object;IILjava/lang/Object;)V
       129: .line 572
            aload 9 /* selectedKeys */
            invokeinterface java.util.Set.clear:()V
       130: .line 568
            aload 14
            monitorexit
       131: goto 134
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top java.nio.channels.Selector java.util.Set
      StackMap stack: java.lang.Throwable
       132: aload 14
            monitorexit
       133: athrow
       134: .line 566
      StackMap locals:
      StackMap stack:
            aload 13
            monitorexit
       135: goto 138
        end local 9 // java.util.Set selectedKeys
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long top java.nio.channels.SelectionKey[] int top java.nio.channels.Selector
      StackMap stack: java.lang.Throwable
       136: aload 13
            monitorexit
       137: athrow
        start local 9 // java.util.Set selectedKeys
       138: .line 575
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int
      StackMap stack:
            iconst_0
            istore 13 /* i */
        start local 13 // int i
       139: goto 159
       140: .line 576
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top int
      StackMap stack:
            aload 10 /* keys */
            iload 13 /* i */
            aaload
            astore 14 /* key */
        start local 14 // java.nio.channels.SelectionKey key
       141: .line 577
            aload 14 /* key */
            ifnonnull 142
            goto 8
       142: .line 578
      StackMap locals: java.nio.channels.SelectionKey
      StackMap stack:
            aload 10 /* keys */
            iload 13 /* i */
            aconst_null
            aastore
       143: .line 581
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            istore 15 /* ops */
        start local 15 // int ops
       144: .line 582
            iload 15 /* ops */
            ifeq 158
       145: .line 583
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Selected key %s for %s"
            aload 14 /* key */
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
       146: .line 584
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.attachment:()Ljava/lang/Object;
            checkcast org.xnio.nio.NioHandle
            astore 16 /* handle */
        start local 16 // org.xnio.nio.NioHandle handle
       147: .line 585
            aload 16 /* handle */
            ifnonnull 150
       148: .line 586
            aload 0 /* this */
            aload 14 /* key */
            iconst_0
            invokevirtual org.xnio.nio.WorkerThread.cancelKey:(Ljava/nio/channels/SelectionKey;Z)V
       149: .line 587
            goto 158
       150: .line 589
      StackMap locals: int org.xnio.nio.NioHandle
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            pop
       151: .line 590
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Calling handleReady key %s for %s"
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.readyOps:()I
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;ILjava/lang/Object;)V
       152: .line 591
            aload 16 /* handle */
            aload 14 /* key */
            invokevirtual java.nio.channels.SelectionKey.readyOps:()I
            invokevirtual org.xnio.nio.NioHandle.handleReady:(I)V
        end local 16 // org.xnio.nio.NioHandle handle
       153: .line 594
            goto 158
        end local 15 // int ops
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector java.lang.Object java.util.Queue java.util.TreeSet java.lang.Runnable top long java.util.Set java.nio.channels.SelectionKey[] int top int java.nio.channels.SelectionKey
      StackMap stack: java.nio.channels.CancelledKeyException
       154: pop
       155: .line 595
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            ldc "Skipping selection of cancelled key %s"
            aload 14 /* key */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
            goto 158
       156: .line 596
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 16 /* t */
        start local 16 // java.lang.Throwable t
       157: .line 597
            getstatic org.xnio.nio.Log.selectorLog:Lorg/xnio/nio/Log;
            aload 16 /* t */
            ldc "Unexpected failure of selection of key %s"
            aload 14 /* key */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)V
        end local 16 // java.lang.Throwable t
        end local 14 // java.nio.channels.SelectionKey key
       158: .line 575
      StackMap locals:
      StackMap stack:
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
       159: iload 13 /* i */
            aload 10 /* keys */
            arraylength
            if_icmplt 140
        end local 13 // int i
        end local 11 // int oldState
        end local 9 // java.util.Set selectedKeys
        end local 5 // java.lang.Runnable task
       160: .line 452
            goto 8
        end local 10 // java.nio.channels.SelectionKey[] keys
        end local 7 // long delayTime
        end local 4 // java.util.TreeSet delayQueue
        end local 3 // java.util.Queue workQueue
        end local 2 // java.lang.Object lock
       161: .line 602
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.Selector
      StackMap stack: java.lang.Throwable
            astore 18
       162: .line 603
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Shutting down channel thread \"%s\""
            aload 0 /* this */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
       163: .line 604
            aload 1 /* selector */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/nio/channels/Selector;)V
       164: .line 605
            aload 0 /* this */
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            invokevirtual org.xnio.nio.NioXnioWorker.closeResource:()V
       165: .line 606
            aload 18
            athrow
        end local 1 // java.nio.channels.Selector selector
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0  166     0          this  Lorg/xnio/nio/WorkerThread;
            1  166     1      selector  Ljava/nio/channels/Selector;
            3  161     2          lock  Ljava/lang/Object;
            4  161     3     workQueue  Ljava/util/Queue<Ljava/lang/Runnable;>;
            5  161     4    delayQueue  Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;
           10   26     5          task  Ljava/lang/Runnable;
           28  160     5          task  Ljava/lang/Runnable;
           12   24     6      iterator  Ljava/util/Iterator<Lorg/xnio/nio/WorkerThread$TimeKey;>;
            7  161     7     delayTime  J
          126  136     9  selectedKeys  Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
          138  160     9  selectedKeys  Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
            8  161    10          keys  [Ljava/nio/channels/SelectionKey;
           32  160    11      oldState  I
           35   43    12      keyCount  I
           45   70    12      keyCount  I
           15   23    14           now  J
           16   22    16           key  Lorg/xnio/nio/WorkerThread$TimeKey;
           47   54    14        keySet  Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
           59   69    13             i  I
           61   67    14           key  Ljava/nio/channels/SelectionKey;
           64   67    15    attachment  Lorg/xnio/nio/NioHandle;
           79   91    13          item  Ljava/lang/Runnable;
           98  118    13        millis  J
          101  113    15          item  Ljava/lang/Runnable;
          122  123    13             e  Ljava/io/IOException;
          139  160    13             i  I
          141  158    14           key  Ljava/nio/channels/SelectionKey;
          144  154    15           ops  I
          147  153    16        handle  Lorg/xnio/nio/NioHandle;
          157  158    16             t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           9    25      26  any
          26    27      26  any
          34    38      43  any
          41    42      43  any
          43    44      43  any
          48    51      52  any
          52    53      52  any
          46    55      56  any
          56    57      56  any
          80    82      83  any
          83    84      83  any
          78    92      92  any
         102   104     105  any
         105   106     105  any
         100   114     114  any
          71   118     119  Class java.nio.channels.CancelledKeyException
          71   118     121  Class java.io.IOException
         127   131     132  any
         132   133     132  any
         125   135     136  any
         136   137     136  any
         143   153     154  Class java.nio.channels.CancelledKeyException
         143   153     156  Class java.lang.Throwable
           1    38     161  any
          41   161     161  any

  private static void safeRun(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Runnable command
         0: .line 610
            aload 0 /* command */
            ifnull 6
         1: .line 611
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Running task %s"
            aload 0 /* command */
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 612
            aload 0 /* command */
            invokeinterface java.lang.Runnable.run:()V
         3: .line 613
            goto 6
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 1 /* t */
        start local 1 // java.lang.Throwable t
         5: .line 614
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            aload 0 /* command */
            aload 1 /* t */
            invokeinterface org.xnio.nio.Log.taskFailed:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable t
         6: .line 616
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Runnable command
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  command  Ljava/lang/Runnable;
            5    6     1        t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     3       4  Class java.lang.Throwable
    MethodParameters:
         Name  Flags
      command  final

  public void execute(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.lang.Runnable command
         0: .line 619
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.state:I
            ldc -2147483648
            iand
            ifeq 2
         1: .line 620
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            invokeinterface org.xnio.nio.Log.threadExiting:()Ljava/util/concurrent/RejectedExecutionException;
            athrow
         2: .line 622
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 623
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
            aload 1 /* command */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         4: .line 624
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            new java.lang.StringBuilder
            dup
            ldc "Added task "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* command */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 622
            aload 2
            monitorexit
         6: goto 9
      StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable java.lang.Object
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
         9: .line 626
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.polling:Z
            ifeq 12
        10: .line 627
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        11: .line 628
            goto 13
        12: .line 629
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            ldc "Not polling, no wakeup"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.xnio.nio.Log.tracef:(Ljava/lang/String;[Ljava/lang/Object;)V
        13: .line 631
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Runnable command
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lorg/xnio/nio/WorkerThread;
            0   14     1  command  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
           3     6       7  any
           7     8       7  any
    MethodParameters:
         Name  Flags
      command  final

  void shutdown();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 636
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.state:I
            istore 1 /* oldState */
        start local 1 // int oldState
         1: .line 637
            iload 1 /* oldState */
            ldc -2147483648
            iand
            ifeq 3
         2: .line 639
            return
         3: .line 641
      StackMap locals: int
      StackMap stack:
            getstatic org.xnio.nio.WorkerThread.stateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iload 1 /* oldState */
            iload 1 /* oldState */
            ldc -2147483648
            ior
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 0
         4: .line 642
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            if_acmpeq 6
         5: .line 643
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
         6: .line 645
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int oldState
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/xnio/nio/WorkerThread;
            1    7     1  oldState  I

  public org.xnio.XnioExecutor$Key executeAfter(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.lang.Runnable command
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 648
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lstore 5 /* millis */
        start local 5 // long millis
         1: .line 649
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.state:I
            ldc -2147483648
            iand
            ifeq 3
         2: .line 650
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            invokeinterface org.xnio.nio.Log.threadExiting:()Ljava/util/concurrent/RejectedExecutionException;
            athrow
         3: .line 652
      StackMap locals: long
      StackMap stack:
            lload 5 /* millis */
            lconst_0
            lcmp
            ifgt 6
         4: .line 653
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual org.xnio.nio.WorkerThread.execute:(Ljava/lang/Runnable;)V
         5: .line 654
            getstatic org.xnio.XnioExecutor$Key.IMMEDIATE:Lorg/xnio/XnioExecutor$Key;
            areturn
         6: .line 656
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            getstatic org.xnio.nio.WorkerThread.START_TIME:J
            lsub
            lload 5 /* millis */
            ldc 9223372036853
            invokestatic java.lang.Math.min:(JJ)J
            ldc 1000000
            lmul
            ladd
            lstore 7 /* deadline */
        start local 7 // long deadline
         7: .line 657
            new org.xnio.nio.WorkerThread$TimeKey
            dup
            aload 0 /* this */
            lload 7 /* deadline */
            aload 1 /* command */
            invokespecial org.xnio.nio.WorkerThread$TimeKey.<init>:(Lorg/xnio/nio/WorkerThread;JLjava/lang/Runnable;)V
            astore 9 /* key */
        start local 9 // org.xnio.nio.WorkerThread$TimeKey key
         8: .line 658
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
            dup
            astore 10
            monitorenter
         9: .line 659
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.delayWorkQueue:Ljava/util/TreeSet;
            astore 11 /* queue */
        start local 11 // java.util.TreeSet queue
        10: .line 660
            aload 11 /* queue */
            aload 9 /* key */
            invokevirtual java.util.TreeSet.add:(Ljava/lang/Object;)Z
            pop
        11: .line 661
            aload 11 /* queue */
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            aload 9 /* key */
            if_acmpne 14
        12: .line 663
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.polling:Z
            ifeq 14
        13: .line 664
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        14: .line 667
      StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable long java.util.concurrent.TimeUnit long long org.xnio.nio.WorkerThread$TimeKey java.lang.Object java.util.TreeSet
      StackMap stack:
            aload 9 /* key */
            aload 10
            monitorexit
        15: areturn
        end local 11 // java.util.TreeSet queue
        16: .line 658
      StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable long java.util.concurrent.TimeUnit long long org.xnio.nio.WorkerThread$TimeKey java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 10
            monitorexit
        17: athrow
        end local 9 // org.xnio.nio.WorkerThread$TimeKey key
        end local 7 // long deadline
        end local 5 // long millis
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.lang.Runnable command
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lorg/xnio/nio/WorkerThread;
            0   18     1   command  Ljava/lang/Runnable;
            0   18     2      time  J
            0   18     4      unit  Ljava/util/concurrent/TimeUnit;
            1   18     5    millis  J
            7   18     7  deadline  J
            8   18     9       key  Lorg/xnio/nio/WorkerThread$TimeKey;
           10   16    11     queue  Ljava/util/TreeSet<Lorg/xnio/nio/WorkerThread$TimeKey;>;
      Exception table:
        from    to  target  type
           9    15      16  any
          16    17      16  any
    MethodParameters:
         Name  Flags
      command  final
      time     final
      unit     final

  public org.xnio.XnioExecutor$Key executeAtInterval(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.lang.Runnable command
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 709
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lstore 5 /* millis */
        start local 5 // long millis
         1: .line 710
            new org.xnio.nio.WorkerThread$RepeatKey
            dup
            aload 0 /* this */
            aload 1 /* command */
            lload 5 /* millis */
            invokespecial org.xnio.nio.WorkerThread$RepeatKey.<init>:(Lorg/xnio/nio/WorkerThread;Ljava/lang/Runnable;J)V
            astore 7 /* repeatKey */
        start local 7 // org.xnio.nio.WorkerThread$RepeatKey repeatKey
         2: .line 711
            aload 0 /* this */
            aload 7 /* repeatKey */
            lload 5 /* millis */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.xnio.nio.WorkerThread.executeAfter:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/XnioExecutor$Key;
            astore 8 /* firstKey */
        start local 8 // org.xnio.XnioExecutor$Key firstKey
         3: .line 712
            aload 7 /* repeatKey */
            aload 8 /* firstKey */
            invokevirtual org.xnio.nio.WorkerThread$RepeatKey.setFirst:(Lorg/xnio/XnioExecutor$Key;)V
         4: .line 713
            aload 7 /* repeatKey */
            areturn
        end local 8 // org.xnio.XnioExecutor$Key firstKey
        end local 7 // org.xnio.nio.WorkerThread$RepeatKey repeatKey
        end local 5 // long millis
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.lang.Runnable command
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/xnio/nio/WorkerThread;
            0    5     1    command  Ljava/lang/Runnable;
            0    5     2       time  J
            0    5     4       unit  Ljava/util/concurrent/TimeUnit;
            1    5     5     millis  J
            2    5     7  repeatKey  Lorg/xnio/nio/WorkerThread$RepeatKey;
            3    5     8   firstKey  Lorg/xnio/XnioExecutor$Key;
    MethodParameters:
         Name  Flags
      command  final
      time     final
      unit     final

  java.nio.channels.SelectionKey registerChannel(java.nio.channels.spi.AbstractSelectableChannel);
    descriptor: (Ljava/nio/channels/spi/AbstractSelectableChannel;)Ljava/nio/channels/SelectionKey;
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.nio.channels.spi.AbstractSelectableChannel channel
         0: .line 717
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            if_acmpne 2
         1: .line 718
            aload 1 /* channel */
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            iconst_0
            invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
            areturn
         2: .line 719
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.WorkerThread.THREAD_SAFE_SELECTION_KEYS:Z
            ifeq 9
         3: .line 721
            aload 1 /* channel */
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            iconst_0
            invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
            astore 3
         4: .line 723
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.polling:Z
            ifeq 5
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
         5: .line 721
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel top java.nio.channels.SelectionKey
      StackMap stack:
            aload 3
            areturn
         6: .line 722
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel
      StackMap stack: java.lang.Throwable
            astore 2
         7: .line 723
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.polling:Z
            ifeq 8
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
         8: .line 724
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
         9: .line 726
      StackMap locals:
      StackMap stack:
            new org.xnio.nio.WorkerThread$SynchTask
            dup
            aload 0 /* this */
            invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
            astore 2 /* task */
        start local 2 // org.xnio.nio.WorkerThread$SynchTask task
        10: .line 727
            aload 0 /* this */
            aload 2 /* task */
            invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
        11: .line 730
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        12: .line 731
            aload 1 /* channel */
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            iconst_0
            invokevirtual java.nio.channels.spi.AbstractSelectableChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
            astore 4
        13: .line 733
            aload 2 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        14: .line 731
            aload 4
            areturn
        15: .line 732
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.spi.AbstractSelectableChannel org.xnio.nio.WorkerThread$SynchTask
      StackMap stack: java.lang.Throwable
            astore 3
        16: .line 733
            aload 2 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        17: .line 734
            aload 3
            athrow
        end local 2 // org.xnio.nio.WorkerThread$SynchTask task
        end local 1 // java.nio.channels.spi.AbstractSelectableChannel channel
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0     this  Lorg/xnio/nio/WorkerThread;
            0   18     1  channel  Ljava/nio/channels/spi/AbstractSelectableChannel;
           10   18     2     task  Lorg/xnio/nio/WorkerThread$SynchTask;
      Exception table:
        from    to  target  type
           3     4       6  any
          11    13      15  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException
    MethodParameters:
         Name  Flags
      channel  final

  void queueTask(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.lang.Runnable task
         0: .line 739
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.workLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 740
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selectorWorkQueue:Ljava/util/Queue;
            aload 1 /* task */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         2: .line 739
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: org.xnio.nio.WorkerThread java.lang.Runnable java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 742
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Runnable task
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/xnio/nio/WorkerThread;
            0    7     1  task  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
      Name  Flags
      task  final

  void cancelKey(java.nio.channels.SelectionKey, boolean);
    descriptor: (Ljava/nio/channels/SelectionKey;Z)V
    flags: (0x0000) 
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.nio.channels.SelectionKey key
        start local 2 // boolean block
         0: .line 745
            getstatic org.xnio.nio.WorkerThread.$assertionsDisabled:Z
            ifne 1
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.selector:()Ljava/nio/channels/Selector;
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 746
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
            astore 3 /* channel */
        start local 3 // java.nio.channels.SelectableChannel channel
         2: .line 747
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            if_acmpne 13
         3: .line 748
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aconst_null
            ldc "Cancelling key %s of %s (same thread)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 750
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
         5: .line 752
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.selectNow:()I
            pop
         6: .line 753
            goto 40
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectableChannel
      StackMap stack: java.io.IOException
         7: astore 4 /* e */
        start local 4 // java.io.IOException e
         8: .line 754
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            aload 4 /* e */
            invokeinterface org.xnio.nio.Log.selectionError:(Ljava/io/IOException;)V
        end local 4 // java.io.IOException e
         9: .line 756
            goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 4 /* t */
        start local 4 // java.lang.Throwable t
        11: .line 757
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aload 4 /* t */
            ldc "Error cancelling key %s of %s (same thread)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // java.lang.Throwable t
        12: .line 759
            goto 40
      StackMap locals:
      StackMap stack:
        13: getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
            ifeq 28
        14: .line 760
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aconst_null
            ldc "Cancelling key %s of %s (same thread, old locking)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        15: .line 761
            new org.xnio.nio.WorkerThread$SynchTask
            dup
            aload 0 /* this */
            invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
            astore 4 /* task */
        start local 4 // org.xnio.nio.WorkerThread$SynchTask task
        16: .line 762
            aload 0 /* this */
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
        17: .line 765
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        18: .line 766
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
        19: .line 767
            goto 26
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectableChannel org.xnio.nio.WorkerThread$SynchTask
      StackMap stack: java.lang.Throwable
        20: astore 5 /* t */
        start local 5 // java.lang.Throwable t
        21: .line 768
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aload 5 /* t */
            ldc "Error cancelling key %s of %s (same thread, old locking)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 5 // java.lang.Throwable t
        22: .line 770
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
            goto 40
        23: .line 769
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        24: .line 770
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        25: .line 771
            aload 6
            athrow
        26: .line 770
      StackMap locals:
      StackMap stack:
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        end local 4 // org.xnio.nio.WorkerThread$SynchTask task
        27: .line 772
            goto 40
        28: .line 773
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aconst_null
            ldc "Cancelling key %s of %s (other thread)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        29: .line 775
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.cancel:()V
        30: .line 776
            iload 2 /* block */
            ifeq 36
        31: .line 777
            new org.xnio.nio.WorkerThread$SelectNowTask
            dup
            aload 0 /* this */
            invokespecial org.xnio.nio.WorkerThread$SelectNowTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
            astore 4 /* task */
        start local 4 // org.xnio.nio.WorkerThread$SelectNowTask task
        32: .line 778
            aload 0 /* this */
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
        33: .line 779
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        34: .line 781
            aload 4 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SelectNowTask.doWait:()V
        end local 4 // org.xnio.nio.WorkerThread$SelectNowTask task
        35: .line 782
            goto 40
        36: .line 783
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        37: .line 785
            goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: astore 4 /* t */
        start local 4 // java.lang.Throwable t
        39: .line 786
            getstatic org.xnio.nio.Log.log:Lorg/xnio/nio/Log;
            getstatic org.xnio.nio.WorkerThread.FQCN:Ljava/lang/String;
            getstatic org.jboss.logging.Logger$Level.TRACE:Lorg/jboss/logging/Logger$Level;
            aload 4 /* t */
            ldc "Error cancelling key %s of %s (other thread)"
            aload 1 /* key */
            aload 3 /* channel */
            invokeinterface org.xnio.nio.Log.logf:(Ljava/lang/String;Lorg/jboss/logging/Logger$Level;Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // java.lang.Throwable t
        40: .line 789
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.nio.channels.SelectableChannel channel
        end local 2 // boolean block
        end local 1 // java.nio.channels.SelectionKey key
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   41     0     this  Lorg/xnio/nio/WorkerThread;
            0   41     1      key  Ljava/nio/channels/SelectionKey;
            0   41     2    block  Z
            2   41     3  channel  Ljava/nio/channels/SelectableChannel;
            8    9     4        e  Ljava/io/IOException;
           11   12     4        t  Ljava/lang/Throwable;
           16   27     4     task  Lorg/xnio/nio/WorkerThread$SynchTask;
           21   22     5        t  Ljava/lang/Throwable;
           32   35     4     task  Lorg/xnio/nio/WorkerThread$SelectNowTask;
           39   40     4        t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           5     6       7  Class java.io.IOException
           4     9      10  Class java.lang.Throwable
          17    19      20  Class java.lang.Throwable
          17    22      23  any
          29    37      38  Class java.lang.Throwable
    MethodParameters:
       Name  Flags
      key    final
      block  final

  void setOps(java.nio.channels.SelectionKey, int);
    descriptor: (Ljava/nio/channels/SelectionKey;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.nio.channels.SelectionKey key
        start local 2 // int ops
         0: .line 792
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            if_acmpne 9
         1: .line 794
            aload 1 /* key */
            dup
            astore 3
            monitorenter
         2: .line 795
            aload 1 /* key */
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            iload 2 /* ops */
            ior
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
         3: .line 794
            aload 3
            monitorexit
         4: goto 35
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
      StackMap stack: java.lang.Throwable
         5: aload 3
            monitorexit
         6: athrow
         7: .line 797
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int
      StackMap stack: java.nio.channels.CancelledKeyException
            pop
         8: .line 798
            goto 35
      StackMap locals:
      StackMap stack:
         9: getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
            ifeq 26
        10: .line 799
            new org.xnio.nio.WorkerThread$SynchTask
            dup
            aload 0 /* this */
            invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
            astore 3 /* task */
        start local 3 // org.xnio.nio.WorkerThread$SynchTask task
        11: .line 800
            aload 0 /* this */
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
        12: .line 803
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        13: .line 804
            aload 1 /* key */
            dup
            astore 4
            monitorenter
        14: .line 805
            aload 1 /* key */
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            iload 2 /* ops */
            ior
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
        15: .line 804
            aload 4
            monitorexit
        16: goto 24
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask java.nio.channels.SelectionKey
      StackMap stack: java.lang.Throwable
        17: aload 4
            monitorexit
        18: athrow
        19: .line 807
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask
      StackMap stack: java.nio.channels.CancelledKeyException
            pop
        20: .line 809
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
            goto 35
        21: .line 808
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        22: .line 809
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        23: .line 810
            aload 5
            athrow
        24: .line 809
      StackMap locals:
      StackMap stack:
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        end local 3 // org.xnio.nio.WorkerThread$SynchTask task
        25: .line 811
            goto 35
        26: .line 813
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            dup
            astore 3
            monitorenter
        27: .line 814
            aload 1 /* key */
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            iload 2 /* ops */
            ior
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
        28: .line 813
            aload 3
            monitorexit
        29: goto 32
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
      StackMap stack: java.lang.Throwable
        30: aload 3
            monitorexit
        31: athrow
        32: .line 816
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.polling:Z
            ifeq 35
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        33: .line 817
            goto 35
      StackMap locals:
      StackMap stack: java.nio.channels.CancelledKeyException
        34: pop
        35: .line 820
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int ops
        end local 1 // java.nio.channels.SelectionKey key
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   36     0  this  Lorg/xnio/nio/WorkerThread;
            0   36     1   key  Ljava/nio/channels/SelectionKey;
            0   36     2   ops  I
           11   25     3  task  Lorg/xnio/nio/WorkerThread$SynchTask;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
           1     7       7  Class java.nio.channels.CancelledKeyException
          14    16      17  any
          17    18      17  any
          12    19      19  Class java.nio.channels.CancelledKeyException
          12    20      21  any
          27    29      30  any
          30    31      30  any
          26    33      34  Class java.nio.channels.CancelledKeyException
    MethodParameters:
      Name  Flags
      key   final
      ops   final

  void clearOps(java.nio.channels.SelectionKey, int);
    descriptor: (Ljava/nio/channels/SelectionKey;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.nio.channels.SelectionKey key
        start local 2 // int ops
         0: .line 823
            invokestatic org.xnio.nio.WorkerThread.currentThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            if_acmpeq 1
            getstatic org.xnio.nio.WorkerThread.OLD_LOCKING:Z
            ifne 9
         1: .line 825
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            dup
            astore 3
            monitorenter
         2: .line 826
            aload 1 /* key */
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            iload 2 /* ops */
            iconst_m1
            ixor
            iand
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
         3: .line 825
            aload 3
            monitorexit
         4: goto 24
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int java.nio.channels.SelectionKey
      StackMap stack: java.lang.Throwable
         5: aload 3
            monitorexit
         6: athrow
         7: .line 828
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int
      StackMap stack: java.nio.channels.CancelledKeyException
            pop
         8: .line 829
            goto 24
         9: .line 830
      StackMap locals:
      StackMap stack:
            new org.xnio.nio.WorkerThread$SynchTask
            dup
            aload 0 /* this */
            invokespecial org.xnio.nio.WorkerThread$SynchTask.<init>:(Lorg/xnio/nio/WorkerThread;)V
            astore 3 /* task */
        start local 3 // org.xnio.nio.WorkerThread$SynchTask task
        10: .line 831
            aload 0 /* this */
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread.queueTask:(Ljava/lang/Runnable;)V
        11: .line 834
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            invokevirtual java.nio.channels.Selector.wakeup:()Ljava/nio/channels/Selector;
            pop
        12: .line 835
            aload 1 /* key */
            dup
            astore 4
            monitorenter
        13: .line 836
            aload 1 /* key */
            aload 1 /* key */
            invokevirtual java.nio.channels.SelectionKey.interestOps:()I
            iload 2 /* ops */
            iconst_m1
            ixor
            iand
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
        14: .line 835
            aload 4
            monitorexit
        15: goto 23
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask java.nio.channels.SelectionKey
      StackMap stack: java.lang.Throwable
        16: aload 4
            monitorexit
        17: athrow
        18: .line 838
      StackMap locals: org.xnio.nio.WorkerThread java.nio.channels.SelectionKey int org.xnio.nio.WorkerThread$SynchTask
      StackMap stack: java.nio.channels.CancelledKeyException
            pop
        19: .line 840
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
            goto 24
        20: .line 839
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        21: .line 840
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        22: .line 841
            aload 5
            athrow
        23: .line 840
      StackMap locals:
      StackMap stack:
            aload 3 /* task */
            invokevirtual org.xnio.nio.WorkerThread$SynchTask.done:()V
        end local 3 // org.xnio.nio.WorkerThread$SynchTask task
        24: .line 843
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int ops
        end local 1 // java.nio.channels.SelectionKey key
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   25     0  this  Lorg/xnio/nio/WorkerThread;
            0   25     1   key  Ljava/nio/channels/SelectionKey;
            0   25     2   ops  I
           10   24     3  task  Lorg/xnio/nio/WorkerThread$SynchTask;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
           1     7       7  Class java.nio.channels.CancelledKeyException
          13    15      16  any
          16    17      16  any
          11    18      18  Class java.nio.channels.CancelledKeyException
          11    19      20  any
    MethodParameters:
      Name  Flags
      key   final
      ops   final

  java.nio.channels.Selector getSelector();
    descriptor: ()Ljava/nio/channels/Selector;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 846
            aload 0 /* this */
            getfield org.xnio.nio.WorkerThread.selector:Ljava/nio/channels/Selector;
            areturn
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/nio/WorkerThread;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.xnio.nio.WorkerThread this
        start local 1 // java.lang.Object obj
         0: .line 850
            aload 1 /* obj */
            aload 0 /* this */
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/xnio/nio/WorkerThread;
            0    2     1   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   final

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.nio.WorkerThread this
         0: .line 854
            aload 0 /* this */
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            ireturn
        end local 0 // org.xnio.nio.WorkerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/nio/WorkerThread;

  public org.xnio.XnioWorker getWorker();
    descriptor: ()Lorg/xnio/XnioWorker;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.xnio.nio.WorkerThread.getWorker:()Lorg/xnio/nio/NioXnioWorker;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "WorkerThread.java"
NestMembers:
  org.xnio.nio.WorkerThread$1  org.xnio.nio.WorkerThread$2  org.xnio.nio.WorkerThread$3  org.xnio.nio.WorkerThread$4  org.xnio.nio.WorkerThread$ConnectHandle  org.xnio.nio.WorkerThread$RepeatKey  org.xnio.nio.WorkerThread$SelectNowTask  org.xnio.nio.WorkerThread$SynchTask  org.xnio.nio.WorkerThread$TimeKey
InnerClasses:
  public abstract SinkChannel = java.nio.channels.Pipe$SinkChannel of java.nio.channels.Pipe
  public abstract SourceChannel = java.nio.channels.Pipe$SourceChannel of java.nio.channels.Pipe
  public final Level = org.jboss.logging.Logger$Level of org.jboss.logging.Logger
  public abstract Key = org.xnio.XnioExecutor$Key of org.xnio.XnioExecutor
  org.xnio.nio.WorkerThread$1
  org.xnio.nio.WorkerThread$2
  org.xnio.nio.WorkerThread$3
  org.xnio.nio.WorkerThread$4
  final ConnectHandle = org.xnio.nio.WorkerThread$ConnectHandle of org.xnio.nio.WorkerThread
  RepeatKey = org.xnio.nio.WorkerThread$RepeatKey of org.xnio.nio.WorkerThread
  final SelectNowTask = org.xnio.nio.WorkerThread$SelectNowTask of org.xnio.nio.WorkerThread
  final SynchTask = org.xnio.nio.WorkerThread$SynchTask of org.xnio.nio.WorkerThread
  final TimeKey = org.xnio.nio.WorkerThread$TimeKey of org.xnio.nio.WorkerThread