public abstract class io.netty.util.concurrent.MultithreadEventExecutorGroup extends io.netty.util.concurrent.AbstractEventExecutorGroup
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.netty.util.concurrent.MultithreadEventExecutorGroup
  super_class: io.netty.util.concurrent.AbstractEventExecutorGroup
{
  private final io.netty.util.concurrent.EventExecutor[] children;
    descriptor: [Lio/netty/util/concurrent/EventExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<io.netty.util.concurrent.EventExecutor> readonlyChildren;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Lio/netty/util/concurrent/EventExecutor;>;

  private final java.util.concurrent.atomic.AtomicInteger terminatedChildren;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.netty.util.concurrent.Promise<?> terminationFuture;
    descriptor: Lio/netty/util/concurrent/Promise;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/netty/util/concurrent/Promise<*>;

  private final io.netty.util.concurrent.EventExecutorChooserFactory$EventExecutorChooser chooser;
    descriptor: Lio/netty/util/concurrent/EventExecutorChooserFactory$EventExecutorChooser;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected void <init>(int, java.util.concurrent.ThreadFactory, java.lang.Object[]);
    descriptor: (ILjava/util/concurrent/ThreadFactory;[Ljava/lang/Object;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
        start local 1 // int nThreads
        start local 2 // java.util.concurrent.ThreadFactory threadFactory
        start local 3 // java.lang.Object[] args
         0: .line 47
            aload 0 /* this */
            iload 1 /* nThreads */
            aload 2 /* threadFactory */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals: uninitialized-this int java.util.concurrent.ThreadFactory java.lang.Object[]
      StackMap stack: uninitialized-this int
         1: new io.netty.util.concurrent.ThreadPerTaskExecutor
            dup
            aload 2 /* threadFactory */
            invokespecial io.netty.util.concurrent.ThreadPerTaskExecutor.<init>:(Ljava/util/concurrent/ThreadFactory;)V
      StackMap locals: uninitialized-this int java.util.concurrent.ThreadFactory java.lang.Object[]
      StackMap stack: uninitialized-this int io.netty.util.concurrent.ThreadPerTaskExecutor
         2: aload 3 /* args */
            invokespecial io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>:(ILjava/util/concurrent/Executor;[Ljava/lang/Object;)V
         3: .line 48
            return
        end local 3 // java.lang.Object[] args
        end local 2 // java.util.concurrent.ThreadFactory threadFactory
        end local 1 // int nThreads
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            0    4     1       nThreads  I
            0    4     2  threadFactory  Ljava/util/concurrent/ThreadFactory;
            0    4     3           args  [Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      nThreads       
      threadFactory  
      args           

  protected void <init>(int, java.util.concurrent.Executor, java.lang.Object[]);
    descriptor: (ILjava/util/concurrent/Executor;[Ljava/lang/Object;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
        start local 1 // int nThreads
        start local 2 // java.util.concurrent.Executor executor
        start local 3 // java.lang.Object[] args
         0: .line 58
            aload 0 /* this */
            iload 1 /* nThreads */
            aload 2 /* executor */
            getstatic io.netty.util.concurrent.DefaultEventExecutorChooserFactory.INSTANCE:Lio/netty/util/concurrent/DefaultEventExecutorChooserFactory;
            aload 3 /* args */
            invokespecial io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>:(ILjava/util/concurrent/Executor;Lio/netty/util/concurrent/EventExecutorChooserFactory;[Ljava/lang/Object;)V
         1: .line 59
            return
        end local 3 // java.lang.Object[] args
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // int nThreads
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            0    2     1  nThreads  I
            0    2     2  executor  Ljava/util/concurrent/Executor;
            0    2     3      args  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      nThreads  
      executor  
      args      

  protected void <init>(int, java.util.concurrent.Executor, io.netty.util.concurrent.EventExecutorChooserFactory, java.lang.Object[]);
    descriptor: (ILjava/util/concurrent/Executor;Lio/netty/util/concurrent/EventExecutorChooserFactory;[Ljava/lang/Object;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=7, locals=11, args_size=5
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
        start local 1 // int nThreads
        start local 2 // java.util.concurrent.Executor executor
        start local 3 // io.netty.util.concurrent.EventExecutorChooserFactory chooserFactory
        start local 4 // java.lang.Object[] args
         0: .line 69
            aload 0 /* this */
            invokespecial io.netty.util.concurrent.AbstractEventExecutorGroup.<init>:()V
         1: .line 35
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            putfield io.netty.util.concurrent.MultithreadEventExecutorGroup.terminatedChildren:Ljava/util/concurrent/atomic/AtomicInteger;
         2: .line 36
            aload 0 /* this */
            new io.netty.util.concurrent.DefaultPromise
            dup
            getstatic io.netty.util.concurrent.GlobalEventExecutor.INSTANCE:Lio/netty/util/concurrent/GlobalEventExecutor;
            invokespecial io.netty.util.concurrent.DefaultPromise.<init>:(Lio/netty/util/concurrent/EventExecutor;)V
            putfield io.netty.util.concurrent.MultithreadEventExecutorGroup.terminationFuture:Lio/netty/util/concurrent/Promise;
         3: .line 71
            iload 1 /* nThreads */
            ifgt 5
         4: .line 72
            new java.lang.IllegalArgumentException
            dup
            ldc "nThreads: %d (expected: > 0)"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 1 /* nThreads */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 75
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[]
      StackMap stack:
            aload 2 /* executor */
            ifnonnull 7
         6: .line 76
            new io.netty.util.concurrent.ThreadPerTaskExecutor
            dup
            aload 0 /* this */
            invokevirtual io.netty.util.concurrent.MultithreadEventExecutorGroup.newDefaultThreadFactory:()Ljava/util/concurrent/ThreadFactory;
            invokespecial io.netty.util.concurrent.ThreadPerTaskExecutor.<init>:(Ljava/util/concurrent/ThreadFactory;)V
            astore 2 /* executor */
         7: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* nThreads */
            anewarray io.netty.util.concurrent.EventExecutor
            putfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
         8: .line 81
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         9: goto 55
        10: .line 82
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 6 /* success */
        start local 6 // boolean success
        11: .line 84
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            iload 5 /* i */
            aload 0 /* this */
            aload 2 /* executor */
            aload 4 /* args */
            invokevirtual io.netty.util.concurrent.MultithreadEventExecutorGroup.newChild:(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Lio/netty/util/concurrent/EventExecutor;
            aastore
        12: .line 85
            iconst_1
            istore 6 /* success */
        13: .line 86
            goto 36
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] int int
      StackMap stack: java.lang.Exception
        14: astore 7 /* e */
        start local 7 // java.lang.Exception e
        15: .line 88
            new java.lang.IllegalStateException
            dup
            ldc "failed to create a child event loop"
            aload 7 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Exception e
        16: .line 89
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        17: .line 90
            iload 6 /* success */
            ifne 35
        18: .line 91
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        19: goto 22
        20: .line 92
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] int int top java.lang.Throwable int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            iload 9 /* j */
            aaload
            invokeinterface io.netty.util.concurrent.EventExecutor.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        21: .line 91
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        22: iload 9 /* j */
            iload 5 /* i */
            if_icmplt 20
        end local 9 // int j
        23: .line 95
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        24: goto 34
        25: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            iload 9 /* j */
            aaload
            astore 10 /* e */
        start local 10 // io.netty.util.concurrent.EventExecutor e
        26: .line 98
            goto 28
        27: .line 99
      StackMap locals: io.netty.util.concurrent.EventExecutor
      StackMap stack:
            aload 10 /* e */
            ldc 2147483647
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface io.netty.util.concurrent.EventExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        28: .line 98
      StackMap locals:
      StackMap stack:
            aload 10 /* e */
            invokeinterface io.netty.util.concurrent.EventExecutor.isTerminated:()Z
            ifeq 27
        29: .line 101
            goto 33
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        30: pop
        31: .line 103
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        32: .line 104
            goto 35
        end local 10 // io.netty.util.concurrent.EventExecutor e
        33: .line 95
      StackMap locals:
      StackMap stack:
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        34: iload 9 /* j */
            iload 5 /* i */
            if_icmplt 25
        end local 9 // int j
        35: .line 108
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        36: .line 90
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] int int
      StackMap stack:
            iload 6 /* success */
            ifne 54
        37: .line 91
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        38: goto 41
        39: .line 92
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] int int top top int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            iload 9 /* j */
            aaload
            invokeinterface io.netty.util.concurrent.EventExecutor.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        40: .line 91
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        41: iload 9 /* j */
            iload 5 /* i */
            if_icmplt 39
        end local 9 // int j
        42: .line 95
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        43: goto 53
        44: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            iload 9 /* j */
            aaload
            astore 10 /* e */
        start local 10 // io.netty.util.concurrent.EventExecutor e
        45: .line 98
            goto 47
        46: .line 99
      StackMap locals: io.netty.util.concurrent.EventExecutor
      StackMap stack:
            aload 10 /* e */
            ldc 2147483647
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface io.netty.util.concurrent.EventExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        47: .line 98
      StackMap locals:
      StackMap stack:
            aload 10 /* e */
            invokeinterface io.netty.util.concurrent.EventExecutor.isTerminated:()Z
            ifeq 46
        48: .line 101
            goto 52
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        49: pop
        50: .line 103
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        51: .line 104
            goto 54
        end local 10 // io.netty.util.concurrent.EventExecutor e
        52: .line 95
      StackMap locals:
      StackMap stack:
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        53: iload 9 /* j */
            iload 5 /* i */
            if_icmplt 44
        end local 9 // int j
        end local 6 // boolean success
        54: .line 81
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] int
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        55: iload 5 /* i */
            iload 1 /* nThreads */
            if_icmplt 10
        end local 5 // int i
        56: .line 111
            aload 0 /* this */
            aload 3 /* chooserFactory */
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            invokeinterface io.netty.util.concurrent.EventExecutorChooserFactory.newChooser:([Lio/netty/util/concurrent/EventExecutor;)Lio/netty/util/concurrent/EventExecutorChooserFactory$EventExecutorChooser;
            putfield io.netty.util.concurrent.MultithreadEventExecutorGroup.chooser:Lio/netty/util/concurrent/EventExecutorChooserFactory$EventExecutorChooser;
        57: .line 113
            new io.netty.util.concurrent.MultithreadEventExecutorGroup$1
            dup
            aload 0 /* this */
            invokespecial io.netty.util.concurrent.MultithreadEventExecutorGroup$1.<init>:(Lio/netty/util/concurrent/MultithreadEventExecutorGroup;)V
            astore 5 /* terminationListener */
        start local 5 // io.netty.util.concurrent.FutureListener terminationListener
        58: .line 122
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 62
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup int java.util.concurrent.Executor io.netty.util.concurrent.EventExecutorChooserFactory java.lang.Object[] io.netty.util.concurrent.FutureListener top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
        59: aload 9
            iload 7
            aaload
            astore 6 /* e */
        start local 6 // io.netty.util.concurrent.EventExecutor e
        60: .line 123
            aload 6 /* e */
            invokeinterface io.netty.util.concurrent.EventExecutor.terminationFuture:()Lio/netty/util/concurrent/Future;
            aload 5 /* terminationListener */
            invokeinterface io.netty.util.concurrent.Future.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/util/concurrent/Future;
            pop
        end local 6 // io.netty.util.concurrent.EventExecutor e
        61: .line 122
            iinc 7 1
      StackMap locals:
      StackMap stack:
        62: iload 7
            iload 8
            if_icmplt 59
        63: .line 126
            new java.util.LinkedHashSet
            dup
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            arraylength
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 6 /* childrenSet */
        start local 6 // java.util.Set childrenSet
        64: .line 127
            aload 6 /* childrenSet */
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        65: .line 128
            aload 0 /* this */
            aload 6 /* childrenSet */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            putfield io.netty.util.concurrent.MultithreadEventExecutorGroup.readonlyChildren:Ljava/util/Set;
        66: .line 129
            return
        end local 6 // java.util.Set childrenSet
        end local 5 // io.netty.util.concurrent.FutureListener terminationListener
        end local 4 // java.lang.Object[] args
        end local 3 // io.netty.util.concurrent.EventExecutorChooserFactory chooserFactory
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // int nThreads
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   67     0                 this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            0   67     1             nThreads  I
            0   67     2             executor  Ljava/util/concurrent/Executor;
            0   67     3       chooserFactory  Lio/netty/util/concurrent/EventExecutorChooserFactory;
            0   67     4                 args  [Ljava/lang/Object;
            9   56     5                    i  I
           11   54     6              success  Z
           15   16     7                    e  Ljava/lang/Exception;
           19   23     9                    j  I
           38   42     9                    j  I
           24   35     9                    j  I
           43   54     9                    j  I
           26   33    10                    e  Lio/netty/util/concurrent/EventExecutor;
           45   52    10                    e  Lio/netty/util/concurrent/EventExecutor;
           58   67     5  terminationListener  Lio/netty/util/concurrent/FutureListener<Ljava/lang/Object;>;
           60   61     6                    e  Lio/netty/util/concurrent/EventExecutor;
           64   67     6          childrenSet  Ljava/util/Set<Lio/netty/util/concurrent/EventExecutor;>;
      Exception table:
        from    to  target  type
          11    13      14  Class java.lang.Exception
          11    16      16  any
          26    29      30  Class java.lang.InterruptedException
          45    48      49  Class java.lang.InterruptedException
    MethodParameters:
                Name  Flags
      nThreads        
      executor        
      chooserFactory  
      args            

  protected java.util.concurrent.ThreadFactory newDefaultThreadFactory();
    descriptor: ()Ljava/util/concurrent/ThreadFactory;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 132
            new io.netty.util.concurrent.DefaultThreadFactory
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokespecial io.netty.util.concurrent.DefaultThreadFactory.<init>:(Ljava/lang/Class;)V
            areturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;

  public io.netty.util.concurrent.EventExecutor next();
    descriptor: ()Lio/netty/util/concurrent/EventExecutor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 137
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.chooser:Lio/netty/util/concurrent/EventExecutorChooserFactory$EventExecutorChooser;
            invokeinterface io.netty.util.concurrent.EventExecutorChooserFactory$EventExecutorChooser.next:()Lio/netty/util/concurrent/EventExecutor;
            areturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;

  public java.util.Iterator<io.netty.util.concurrent.EventExecutor> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 142
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.readonlyChildren:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
    Signature: ()Ljava/util/Iterator<Lio/netty/util/concurrent/EventExecutor;>;

  public final int executorCount();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 150
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            arraylength
            ireturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;

  protected abstract io.netty.util.concurrent.EventExecutor newChild(java.util.concurrent.Executor, java.lang.Object[]);
    descriptor: (Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Lio/netty/util/concurrent/EventExecutor;
    flags: (0x0484) ACC_PROTECTED, ACC_VARARGS, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      executor  
      args      

  public io.netty.util.concurrent.Future<?> shutdownGracefully(long, long, java.util.concurrent.TimeUnit);
    descriptor: (JJLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=4
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
        start local 1 // long quietPeriod
        start local 3 // long timeout
        start local 5 // java.util.concurrent.TimeUnit unit
         0: .line 162
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 4
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup long long java.util.concurrent.TimeUnit top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         1: aload 9
            iload 7
            aaload
            astore 6 /* l */
        start local 6 // io.netty.util.concurrent.EventExecutor l
         2: .line 163
            aload 6 /* l */
            lload 1 /* quietPeriod */
            lload 3 /* timeout */
            aload 5 /* unit */
            invokeinterface io.netty.util.concurrent.EventExecutor.shutdownGracefully:(JJLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/Future;
            pop
        end local 6 // io.netty.util.concurrent.EventExecutor l
         3: .line 162
            iinc 7 1
      StackMap locals:
      StackMap stack:
         4: iload 7
            iload 8
            if_icmplt 1
         5: .line 165
            aload 0 /* this */
            invokevirtual io.netty.util.concurrent.MultithreadEventExecutorGroup.terminationFuture:()Lio/netty/util/concurrent/Future;
            areturn
        end local 5 // java.util.concurrent.TimeUnit unit
        end local 3 // long timeout
        end local 1 // long quietPeriod
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            0    6     1  quietPeriod  J
            0    6     3      timeout  J
            0    6     5         unit  Ljava/util/concurrent/TimeUnit;
            2    3     6            l  Lio/netty/util/concurrent/EventExecutor;
    Signature: (JJLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/Future<*>;
    MethodParameters:
             Name  Flags
      quietPeriod  
      timeout      
      unit         

  public io.netty.util.concurrent.Future<?> terminationFuture();
    descriptor: ()Lio/netty/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 170
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.terminationFuture:Lio/netty/util/concurrent/Promise;
            areturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
    Signature: ()Lio/netty/util/concurrent/Future<*>;

  public void shutdown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 176
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 4
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* l */
        start local 1 // io.netty.util.concurrent.EventExecutor l
         2: .line 177
            aload 1 /* l */
            invokeinterface io.netty.util.concurrent.EventExecutor.shutdown:()V
        end local 1 // io.netty.util.concurrent.EventExecutor l
         3: .line 176
            iinc 2 1
      StackMap locals:
      StackMap stack:
         4: iload 2
            iload 3
            if_icmplt 1
         5: .line 179
            return
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            2    3     1     l  Lio/netty/util/concurrent/EventExecutor;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public boolean isShuttingDown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 183
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* l */
        start local 1 // io.netty.util.concurrent.EventExecutor l
         2: .line 184
            aload 1 /* l */
            invokeinterface io.netty.util.concurrent.EventExecutor.isShuttingDown:()Z
            ifne 4
         3: .line 185
            iconst_0
            ireturn
        end local 1 // io.netty.util.concurrent.EventExecutor l
         4: .line 183
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 188
            iconst_1
            ireturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            2    4     1     l  Lio/netty/util/concurrent/EventExecutor;

  public boolean isShutdown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 193
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* l */
        start local 1 // io.netty.util.concurrent.EventExecutor l
         2: .line 194
            aload 1 /* l */
            invokeinterface io.netty.util.concurrent.EventExecutor.isShutdown:()Z
            ifne 4
         3: .line 195
            iconst_0
            ireturn
        end local 1 // io.netty.util.concurrent.EventExecutor l
         4: .line 193
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 198
            iconst_1
            ireturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            2    4     1     l  Lio/netty/util/concurrent/EventExecutor;

  public boolean isTerminated();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
         0: .line 203
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* l */
        start local 1 // io.netty.util.concurrent.EventExecutor l
         2: .line 204
            aload 1 /* l */
            invokeinterface io.netty.util.concurrent.EventExecutor.isTerminated:()Z
            ifne 4
         3: .line 205
            iconst_0
            ireturn
        end local 1 // io.netty.util.concurrent.EventExecutor l
         4: .line 203
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 208
            iconst_1
            ireturn
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            2    4     1     l  Lio/netty/util/concurrent/EventExecutor;

  public boolean awaitTermination(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 214
            invokestatic java.lang.System.nanoTime:()J
            aload 3 /* unit */
            lload 1 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            ladd
            lstore 4 /* deadline */
        start local 4 // long deadline
         1: .line 215
            aload 0 /* this */
            getfield io.netty.util.concurrent.MultithreadEventExecutorGroup.children:[Lio/netty/util/concurrent/EventExecutor;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 8
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup long java.util.concurrent.TimeUnit long top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         2: aload 9
            iload 7
            aaload
            astore 6 /* l */
        start local 6 // io.netty.util.concurrent.EventExecutor l
         3: .line 217
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup long java.util.concurrent.TimeUnit long io.netty.util.concurrent.EventExecutor int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
            lload 4 /* deadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            lstore 10 /* timeLeft */
        start local 10 // long timeLeft
         4: .line 218
            lload 10 /* timeLeft */
            lconst_0
            lcmp
            ifgt 6
         5: .line 219
            goto 9
         6: .line 221
      StackMap locals: long
      StackMap stack:
            aload 6 /* l */
            lload 10 /* timeLeft */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface io.netty.util.concurrent.EventExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            ifeq 3
        end local 10 // long timeLeft
        end local 6 // io.netty.util.concurrent.EventExecutor l
         7: .line 215
            iinc 7 1
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup long java.util.concurrent.TimeUnit long top int int io.netty.util.concurrent.EventExecutor[]
      StackMap stack:
         8: iload 7
            iload 8
            if_icmplt 2
         9: .line 226
      StackMap locals: io.netty.util.concurrent.MultithreadEventExecutorGroup long java.util.concurrent.TimeUnit long
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.concurrent.MultithreadEventExecutorGroup.isTerminated:()Z
            ireturn
        end local 4 // long deadline
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // io.netty.util.concurrent.MultithreadEventExecutorGroup this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lio/netty/util/concurrent/MultithreadEventExecutorGroup;
            0   10     1   timeout  J
            0   10     3      unit  Ljava/util/concurrent/TimeUnit;
            1   10     4  deadline  J
            3    7     6         l  Lio/netty/util/concurrent/EventExecutor;
            4    7    10  timeLeft  J
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
         Name  Flags
      timeout  
      unit     
}
SourceFile: "MultithreadEventExecutorGroup.java"
NestMembers:
  io.netty.util.concurrent.MultithreadEventExecutorGroup$1
InnerClasses:
  public abstract EventExecutorChooser = io.netty.util.concurrent.EventExecutorChooserFactory$EventExecutorChooser of io.netty.util.concurrent.EventExecutorChooserFactory
  io.netty.util.concurrent.MultithreadEventExecutorGroup$1