class sun.nio.ch.Invoker
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.nio.ch.Invoker
  super_class: java.lang.Object
{
  private static final int maxHandlerInvokeCount;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.ThreadLocal<sun.nio.ch.Invoker$GroupAndInvokeCount> myGroupAndInvokeCount;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lsun/nio/ch/Invoker$GroupAndInvokeCount;>;

  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 37
            ldc Lsun/nio/ch/Invoker;
            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 sun.nio.ch.Invoker.$assertionsDisabled:Z
         3: .line 44
            new sun.security.action.GetIntegerAction
            dup
            ldc "sun.nio.ch.maxCompletionHandlersOnStack"
            bipush 16
            invokespecial sun.security.action.GetIntegerAction.<init>:(Ljava/lang/String;I)V
         4: .line 43
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            putstatic sun.nio.ch.Invoker.maxHandlerInvokeCount:I
         5: .line 72
            new sun.nio.ch.Invoker$1
            dup
            invokespecial sun.nio.ch.Invoker$1.<init>:()V
         6: .line 71
            putstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
         7: .line 76
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.Invoker this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.nio.ch.Invoker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/Invoker;

  static void bindToGroup(sun.nio.ch.AsynchronousChannelGroupImpl);
    descriptor: (Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.nio.ch.AsynchronousChannelGroupImpl group
         0: .line 82
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            new sun.nio.ch.Invoker$GroupAndInvokeCount
            dup
            aload 0 /* group */
            invokespecial sun.nio.ch.Invoker$GroupAndInvokeCount.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         1: .line 83
            return
        end local 0 // sun.nio.ch.AsynchronousChannelGroupImpl group
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  group  Lsun/nio/ch/AsynchronousChannelGroupImpl;
    MethodParameters:
       Name  Flags
      group  

  static sun.nio.ch.Invoker$GroupAndInvokeCount getGroupAndInvokeCount();
    descriptor: ()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 89
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast sun.nio.ch.Invoker$GroupAndInvokeCount
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static boolean isBoundToAnyGroup();
    descriptor: ()Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 96
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static boolean mayInvokeDirect(sun.nio.ch.Invoker$GroupAndInvokeCount, sun.nio.ch.AsynchronousChannelGroupImpl);
    descriptor: (Lsun/nio/ch/Invoker$GroupAndInvokeCount;Lsun/nio/ch/AsynchronousChannelGroupImpl;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
        start local 1 // sun.nio.ch.AsynchronousChannelGroupImpl group
         0: .line 107
            aload 0 /* myGroupAndInvokeCount */
            ifnull 4
         1: .line 108
            aload 0 /* myGroupAndInvokeCount */
            invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.group:()Lsun/nio/ch/AsynchronousChannelGroupImpl;
            aload 1 /* group */
            if_acmpne 4
         2: .line 109
            aload 0 /* myGroupAndInvokeCount */
            invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.invokeCount:()I
            getstatic sun.nio.ch.Invoker.maxHandlerInvokeCount:I
            if_icmpge 4
         3: .line 111
            iconst_1
            ireturn
         4: .line 113
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // sun.nio.ch.AsynchronousChannelGroupImpl group
        end local 0 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    5     0  myGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            0    5     1                  group  Lsun/nio/ch/AsynchronousChannelGroupImpl;
    MethodParameters:
                       Name  Flags
      myGroupAndInvokeCount  
      group                  

  static <V, A> void invokeUnchecked(java.nio.channels.CompletionHandler<V, ? super A>, A, V, java.lang.Throwable);
    descriptor: (Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // java.nio.channels.CompletionHandler handler
        start local 1 // java.lang.Object attachment
        start local 2 // java.lang.Object value
        start local 3 // java.lang.Throwable exc
         0: .line 125
            aload 3 /* exc */
            ifnonnull 3
         1: .line 126
            aload 0 /* handler */
            aload 2 /* value */
            aload 1 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.completed:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 127
            goto 4
         3: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* handler */
            aload 3 /* exc */
            aload 1 /* attachment */
            invokeinterface java.nio.channels.CompletionHandler.failed:(Ljava/lang/Throwable;Ljava/lang/Object;)V
         4: .line 132
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.interrupted:()Z
            pop
         5: .line 135
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 12
         6: .line 136
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 4 /* me */
        start local 4 // java.lang.Thread me
         7: .line 137
            aload 4 /* me */
            instanceof sun.misc.InnocuousThread
            ifeq 12
         8: .line 138
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast sun.nio.ch.Invoker$GroupAndInvokeCount
            astore 5 /* thisGroupAndInvokeCount */
        start local 5 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
         9: .line 139
            aload 4 /* me */
            checkcast sun.misc.InnocuousThread
            invokevirtual sun.misc.InnocuousThread.eraseThreadLocals:()V
        10: .line 140
            aload 5 /* thisGroupAndInvokeCount */
            ifnull 12
        11: .line 141
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            aload 5 /* thisGroupAndInvokeCount */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
        end local 5 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
        end local 4 // java.lang.Thread me
        12: .line 145
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Throwable exc
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object attachment
        end local 0 // java.nio.channels.CompletionHandler handler
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   13     0                  handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            0   13     1               attachment  TA;
            0   13     2                    value  TV;
            0   13     3                      exc  Ljava/lang/Throwable;
            7   12     4                       me  Ljava/lang/Thread;
            9   12     5  thisGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Ljava/nio/channels/CompletionHandler<TV;-TA;>;TA;TV;Ljava/lang/Throwable;)V
    MethodParameters:
            Name  Flags
      handler     
      attachment  
      value       
      exc         

  static <V, A> void invokeDirect(sun.nio.ch.Invoker$GroupAndInvokeCount, java.nio.channels.CompletionHandler<V, ? super A>, A, V, java.lang.Throwable);
    descriptor: (Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
        start local 1 // java.nio.channels.CompletionHandler handler
        start local 2 // java.lang.Object attachment
        start local 3 // java.lang.Object result
        start local 4 // java.lang.Throwable exc
         0: .line 156
            aload 0 /* myGroupAndInvokeCount */
            invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.incrementInvokeCount:()V
         1: .line 157
            aload 1 /* handler */
            aload 2 /* attachment */
            aload 3 /* result */
            aload 4 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
         2: .line 158
            return
        end local 4 // java.lang.Throwable exc
        end local 3 // java.lang.Object result
        end local 2 // java.lang.Object attachment
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0  myGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            0    3     1                handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            0    3     2             attachment  TA;
            0    3     3                 result  TV;
            0    3     4                    exc  Ljava/lang/Throwable;
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler<TV;-TA;>;TA;TV;Ljava/lang/Throwable;)V
    MethodParameters:
                       Name  Flags
      myGroupAndInvokeCount  
      handler                
      attachment             
      result                 
      exc                    

  static <V, A> void invoke(java.nio.channels.AsynchronousChannel, java.nio.channels.CompletionHandler<V, ? super A>, A, V, java.lang.Throwable);
    descriptor: (Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // java.nio.channels.AsynchronousChannel channel
        start local 1 // java.nio.channels.CompletionHandler handler
        start local 2 // java.lang.Object attachment
        start local 3 // java.lang.Object result
        start local 4 // java.lang.Throwable exc
         0: .line 171
            iconst_0
            istore 5 /* invokeDirect */
        start local 5 // boolean invokeDirect
         1: .line 172
            iconst_0
            istore 6 /* identityOkay */
        start local 6 // boolean identityOkay
         2: .line 173
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast sun.nio.ch.Invoker$GroupAndInvokeCount
            astore 7 /* thisGroupAndInvokeCount */
        start local 7 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
         3: .line 174
            aload 7 /* thisGroupAndInvokeCount */
            ifnull 9
         4: .line 175
            aload 7 /* thisGroupAndInvokeCount */
            invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.group:()Lsun/nio/ch/AsynchronousChannelGroupImpl;
            aload 0 /* channel */
            checkcast sun.nio.ch.Groupable
            invokeinterface sun.nio.ch.Groupable.group:()Lsun/nio/ch/AsynchronousChannelGroupImpl;
            if_acmpne 6
         5: .line 176
            iconst_1
            istore 6 /* identityOkay */
         6: .line 177
      StackMap locals: int int sun.nio.ch.Invoker$GroupAndInvokeCount
      StackMap stack:
            iload 6 /* identityOkay */
            ifeq 9
         7: .line 178
            aload 7 /* thisGroupAndInvokeCount */
            invokevirtual sun.nio.ch.Invoker$GroupAndInvokeCount.invokeCount:()I
            getstatic sun.nio.ch.Invoker.maxHandlerInvokeCount:I
            if_icmpge 9
         8: .line 181
            iconst_1
            istore 5 /* invokeDirect */
         9: .line 184
      StackMap locals:
      StackMap stack:
            iload 5 /* invokeDirect */
            ifeq 12
        10: .line 185
            aload 7 /* thisGroupAndInvokeCount */
            aload 1 /* handler */
            aload 2 /* attachment */
            aload 3 /* result */
            aload 4 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        11: .line 186
            goto 21
        12: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* handler */
            aload 2 /* attachment */
            aload 3 /* result */
            aload 4 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        13: .line 189
            goto 21
      StackMap locals:
      StackMap stack: java.util.concurrent.RejectedExecutionException
        14: pop
        15: .line 192
            iload 6 /* identityOkay */
            ifeq 20
        16: .line 193
            aload 7 /* thisGroupAndInvokeCount */
        17: .line 194
            aload 1 /* handler */
            aload 2 /* attachment */
            aload 3 /* result */
            aload 4 /* exc */
        18: .line 193
            invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        19: .line 195
            goto 21
        20: .line 196
      StackMap locals:
      StackMap stack:
            new java.nio.channels.ShutdownChannelGroupException
            dup
            invokespecial java.nio.channels.ShutdownChannelGroupException.<init>:()V
            athrow
        21: .line 200
      StackMap locals:
      StackMap stack:
            return
        end local 7 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
        end local 6 // boolean identityOkay
        end local 5 // boolean invokeDirect
        end local 4 // java.lang.Throwable exc
        end local 3 // java.lang.Object result
        end local 2 // java.lang.Object attachment
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // java.nio.channels.AsynchronousChannel channel
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   22     0                  channel  Ljava/nio/channels/AsynchronousChannel;
            0   22     1                  handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            0   22     2               attachment  TA;
            0   22     3                   result  TV;
            0   22     4                      exc  Ljava/lang/Throwable;
            1   22     5             invokeDirect  Z
            2   22     6             identityOkay  Z
            3   22     7  thisGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
      Exception table:
        from    to  target  type
          12    13      14  Class java.util.concurrent.RejectedExecutionException
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler<TV;-TA;>;TA;TV;Ljava/lang/Throwable;)V
    MethodParameters:
            Name  Flags
      channel     
      handler     
      attachment  
      result      
      exc         

  static <V, A> void invokeIndirectly(java.nio.channels.AsynchronousChannel, java.nio.channels.CompletionHandler<V, ? super A>, A, V, java.lang.Throwable);
    descriptor: (Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // java.nio.channels.AsynchronousChannel channel
        start local 1 // java.nio.channels.CompletionHandler handler
        start local 2 // java.lang.Object attachment
        start local 3 // java.lang.Object result
        start local 4 // java.lang.Throwable exc
         0: .line 212
            aload 0 /* channel */
            checkcast sun.nio.ch.Groupable
            invokeinterface sun.nio.ch.Groupable.group:()Lsun/nio/ch/AsynchronousChannelGroupImpl;
            new sun.nio.ch.Invoker$2
            dup
            aload 1 /* handler */
            aload 2 /* attachment */
            aload 3 /* result */
            aload 4 /* exc */
            invokespecial sun.nio.ch.Invoker$2.<init>:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
            invokevirtual sun.nio.ch.AsynchronousChannelGroupImpl.executeOnPooledThread:(Ljava/lang/Runnable;)V
         1: .line 221
            goto 4
      StackMap locals:
      StackMap stack: java.util.concurrent.RejectedExecutionException
         2: pop
         3: .line 222
            new java.nio.channels.ShutdownChannelGroupException
            dup
            invokespecial java.nio.channels.ShutdownChannelGroupException.<init>:()V
            athrow
         4: .line 224
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.Throwable exc
        end local 3 // java.lang.Object result
        end local 2 // java.lang.Object attachment
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // java.nio.channels.AsynchronousChannel channel
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0     channel  Ljava/nio/channels/AsynchronousChannel;
            0    5     1     handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            0    5     2  attachment  TA;
            0    5     3      result  TV;
            0    5     4         exc  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.util.concurrent.RejectedExecutionException
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler<TV;-TA;>;TA;TV;Ljava/lang/Throwable;)V
    MethodParameters:
            Name  Flags
      channel     
      handler     final
      attachment  final
      result      final
      exc         final

  static <V, A> void invokeIndirectly(java.nio.channels.CompletionHandler<V, ? super A>, A, V, java.lang.Throwable, java.util.concurrent.Executor);
    descriptor: (Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // java.nio.channels.CompletionHandler handler
        start local 1 // java.lang.Object attachment
        start local 2 // java.lang.Object value
        start local 3 // java.lang.Throwable exc
        start local 4 // java.util.concurrent.Executor executor
         0: .line 236
            aload 4 /* executor */
            new sun.nio.ch.Invoker$3
            dup
            aload 0 /* handler */
            aload 1 /* attachment */
            aload 2 /* value */
            aload 3 /* exc */
            invokespecial sun.nio.ch.Invoker$3.<init>:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         1: .line 241
            goto 4
      StackMap locals:
      StackMap stack: java.util.concurrent.RejectedExecutionException
         2: pop
         3: .line 242
            new java.nio.channels.ShutdownChannelGroupException
            dup
            invokespecial java.nio.channels.ShutdownChannelGroupException.<init>:()V
            athrow
         4: .line 244
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.util.concurrent.Executor executor
        end local 3 // java.lang.Throwable exc
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object attachment
        end local 0 // java.nio.channels.CompletionHandler handler
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0     handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            0    5     1  attachment  TA;
            0    5     2       value  TV;
            0    5     3         exc  Ljava/lang/Throwable;
            0    5     4    executor  Ljava/util/concurrent/Executor;
      Exception table:
        from    to  target  type
           0     1       2  Class java.util.concurrent.RejectedExecutionException
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Ljava/nio/channels/CompletionHandler<TV;-TA;>;TA;TV;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
    MethodParameters:
            Name  Flags
      handler     final
      attachment  final
      value       final
      exc         final
      executor    

  static void invokeOnThreadInThreadPool(sun.nio.ch.Groupable, java.lang.Runnable);
    descriptor: (Lsun/nio/ch/Groupable;Ljava/lang/Runnable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // sun.nio.ch.Groupable channel
        start local 1 // java.lang.Runnable task
         0: .line 255
            getstatic sun.nio.ch.Invoker.myGroupAndInvokeCount:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast sun.nio.ch.Invoker$GroupAndInvokeCount
            astore 3 /* thisGroupAndInvokeCount */
        start local 3 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
         1: .line 256
            aload 0 /* channel */
            invokeinterface sun.nio.ch.Groupable.group:()Lsun/nio/ch/AsynchronousChannelGroupImpl;
            astore 4 /* targetGroup */
        start local 4 // sun.nio.ch.AsynchronousChannelGroupImpl targetGroup
         2: .line 257
            aload 3 /* thisGroupAndInvokeCount */
            ifnonnull 5
         3: .line 258
            iconst_0
            istore 2 /* invokeDirect */
        start local 2 // boolean invokeDirect
         4: .line 259
            goto 8
        end local 2 // boolean invokeDirect
         5: .line 260
      StackMap locals: sun.nio.ch.Groupable java.lang.Runnable top sun.nio.ch.Invoker$GroupAndInvokeCount sun.nio.ch.AsynchronousChannelGroupImpl
      StackMap stack:
            aload 3 /* thisGroupAndInvokeCount */
            getfield sun.nio.ch.Invoker$GroupAndInvokeCount.group:Lsun/nio/ch/AsynchronousChannelGroupImpl;
            aload 4 /* targetGroup */
            if_acmpne 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 2 /* invokeDirect */
        start local 2 // boolean invokeDirect
         8: .line 263
      StackMap locals: sun.nio.ch.Groupable java.lang.Runnable int sun.nio.ch.Invoker$GroupAndInvokeCount sun.nio.ch.AsynchronousChannelGroupImpl
      StackMap stack:
            iload 2 /* invokeDirect */
            ifeq 11
         9: .line 264
            aload 1 /* task */
            invokeinterface java.lang.Runnable.run:()V
        10: .line 265
            goto 15
        11: .line 266
      StackMap locals:
      StackMap stack:
            aload 4 /* targetGroup */
            aload 1 /* task */
            invokevirtual sun.nio.ch.AsynchronousChannelGroupImpl.executeOnPooledThread:(Ljava/lang/Runnable;)V
        12: .line 268
            goto 15
      StackMap locals:
      StackMap stack: java.util.concurrent.RejectedExecutionException
        13: pop
        14: .line 269
            new java.nio.channels.ShutdownChannelGroupException
            dup
            invokespecial java.nio.channels.ShutdownChannelGroupException.<init>:()V
            athrow
        15: .line 271
      StackMap locals:
      StackMap stack:
            return
        end local 4 // sun.nio.ch.AsynchronousChannelGroupImpl targetGroup
        end local 3 // sun.nio.ch.Invoker$GroupAndInvokeCount thisGroupAndInvokeCount
        end local 2 // boolean invokeDirect
        end local 1 // java.lang.Runnable task
        end local 0 // sun.nio.ch.Groupable channel
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   16     0                  channel  Lsun/nio/ch/Groupable;
            0   16     1                     task  Ljava/lang/Runnable;
            4    5     2             invokeDirect  Z
            8   16     2             invokeDirect  Z
            1   16     3  thisGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            2   16     4              targetGroup  Lsun/nio/ch/AsynchronousChannelGroupImpl;
      Exception table:
        from    to  target  type
           8    12      13  Class java.util.concurrent.RejectedExecutionException
    MethodParameters:
         Name  Flags
      channel  
      task     

  static <V, A> void invokeUnchecked(sun.nio.ch.PendingFuture<V, A>);
    descriptor: (Lsun/nio/ch/PendingFuture;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.PendingFuture future
         0: .line 278
            getstatic sun.nio.ch.Invoker.$assertionsDisabled:Z
            ifne 1
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.handler:()Ljava/nio/channels/CompletionHandler;
            astore 1 /* handler */
        start local 1 // java.nio.channels.CompletionHandler handler
         2: .line 280
            aload 1 /* handler */
            ifnull 8
         3: .line 281
            aload 1 /* handler */
         4: .line 282
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.attachment:()Ljava/lang/Object;
         5: .line 283
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.value:()Ljava/lang/Object;
         6: .line 284
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.exception:()Ljava/lang/Throwable;
         7: .line 281
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
         8: .line 286
      StackMap locals: java.nio.channels.CompletionHandler
      StackMap stack:
            return
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // sun.nio.ch.PendingFuture future
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0   future  Lsun/nio/ch/PendingFuture<TV;TA;>;
            2    9     1  handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Lsun/nio/ch/PendingFuture<TV;TA;>;)V
    MethodParameters:
        Name  Flags
      future  

  static <V, A> void invoke(sun.nio.ch.PendingFuture<V, A>);
    descriptor: (Lsun/nio/ch/PendingFuture;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // sun.nio.ch.PendingFuture future
         0: .line 294
            getstatic sun.nio.ch.Invoker.$assertionsDisabled:Z
            ifne 1
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.handler:()Ljava/nio/channels/CompletionHandler;
            astore 1 /* handler */
        start local 1 // java.nio.channels.CompletionHandler handler
         2: .line 296
            aload 1 /* handler */
            ifnull 9
         3: .line 297
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.channel:()Ljava/nio/channels/AsynchronousChannel;
         4: .line 298
            aload 1 /* handler */
         5: .line 299
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.attachment:()Ljava/lang/Object;
         6: .line 300
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.value:()Ljava/lang/Object;
         7: .line 301
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.exception:()Ljava/lang/Throwable;
         8: .line 297
            invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
         9: .line 303
      StackMap locals: java.nio.channels.CompletionHandler
      StackMap stack:
            return
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // sun.nio.ch.PendingFuture future
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0   future  Lsun/nio/ch/PendingFuture<TV;TA;>;
            2   10     1  handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Lsun/nio/ch/PendingFuture<TV;TA;>;)V
    MethodParameters:
        Name  Flags
      future  

  static <V, A> void invokeIndirectly(sun.nio.ch.PendingFuture<V, A>);
    descriptor: (Lsun/nio/ch/PendingFuture;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // sun.nio.ch.PendingFuture future
         0: .line 310
            getstatic sun.nio.ch.Invoker.$assertionsDisabled:Z
            ifne 1
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.isDone:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.handler:()Ljava/nio/channels/CompletionHandler;
            astore 1 /* handler */
        start local 1 // java.nio.channels.CompletionHandler handler
         2: .line 312
            aload 1 /* handler */
            ifnull 9
         3: .line 313
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.channel:()Ljava/nio/channels/AsynchronousChannel;
         4: .line 314
            aload 1 /* handler */
         5: .line 315
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.attachment:()Ljava/lang/Object;
         6: .line 316
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.value:()Ljava/lang/Object;
         7: .line 317
            aload 0 /* future */
            invokevirtual sun.nio.ch.PendingFuture.exception:()Ljava/lang/Throwable;
         8: .line 313
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
         9: .line 319
      StackMap locals: java.nio.channels.CompletionHandler
      StackMap stack:
            return
        end local 1 // java.nio.channels.CompletionHandler handler
        end local 0 // sun.nio.ch.PendingFuture future
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0   future  Lsun/nio/ch/PendingFuture<TV;TA;>;
            2   10     1  handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
    Signature: <V:Ljava/lang/Object;A:Ljava/lang/Object;>(Lsun/nio/ch/PendingFuture<TV;TA;>;)V
    MethodParameters:
        Name  Flags
      future  
}
SourceFile: "Invoker.java"
NestMembers:
  sun.nio.ch.Invoker$1  sun.nio.ch.Invoker$2  sun.nio.ch.Invoker$3  sun.nio.ch.Invoker$GroupAndInvokeCount
InnerClasses:
  sun.nio.ch.Invoker$1
  sun.nio.ch.Invoker$2
  sun.nio.ch.Invoker$3
  GroupAndInvokeCount = sun.nio.ch.Invoker$GroupAndInvokeCount of sun.nio.ch.Invoker