public final class com.google.common.util.concurrent.ExecutionList
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.ExecutionList
  super_class: java.lang.Object
{
  private static final java.util.logging.Logger log;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair runnables;
    descriptor: Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
    flags: (0x0002) ACC_PRIVATE
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.concurrent.GuardedBy(value = "this")
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  private boolean executed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.concurrent.GuardedBy(value = "this")

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 45
            ldc Lcom/google/common/util/concurrent/ExecutionList;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
            putstatic com.google.common.util.concurrent.ExecutionList.log:Ljava/util/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ExecutionList this
         0: .line 58
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.util.concurrent.ExecutionList this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ExecutionList;

  public void add(java.lang.Runnable, java.util.concurrent.Executor);
    descriptor: (Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.google.common.util.concurrent.ExecutionList this
        start local 1 // java.lang.Runnable runnable
        start local 2 // java.util.concurrent.Executor executor
         0: .line 71
            aload 1 /* runnable */
            ldc "Runnable was null."
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 72
            aload 2 /* executor */
            ldc "Executor was null."
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 77
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         3: .line 78
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionList.executed:Z
            ifne 7
         4: .line 79
            aload 0 /* this */
            new com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair
            dup
            aload 1 /* runnable */
            aload 2 /* executor */
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionList.runnables:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
            invokespecial com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.<init>:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;)V
            putfield com.google.common.util.concurrent.ExecutionList.runnables:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
         5: .line 80
            aload 3
            monitorexit
         6: return
         7: .line 77
      StackMap locals: com.google.common.util.concurrent.ExecutionList
      StackMap stack:
            aload 3
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        11: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* runnable */
            aload 2 /* executor */
            invokestatic com.google.common.util.concurrent.ExecutionList.executeListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
        12: .line 88
            return
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // java.lang.Runnable runnable
        end local 0 // com.google.common.util.concurrent.ExecutionList this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lcom/google/common/util/concurrent/ExecutionList;
            0   13     1  runnable  Ljava/lang/Runnable;
            0   13     2  executor  Ljava/util/concurrent/Executor;
      Exception table:
        from    to  target  type
           3     6       9  any
           7     8       9  any
           9    10       9  any
    MethodParameters:
          Name  Flags
      runnable  
      executor  

  public void execute();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.google.common.util.concurrent.ExecutionList this
         0: .line 105
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 106
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionList.executed:Z
            ifeq 4
         2: .line 107
            aload 2
            monitorexit
         3: return
         4: .line 109
      StackMap locals: com.google.common.util.concurrent.ExecutionList top com.google.common.util.concurrent.ExecutionList
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.google.common.util.concurrent.ExecutionList.executed:Z
         5: .line 110
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionList.runnables:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
            astore 1 /* list */
        start local 1 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair list
         6: .line 111
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionList.runnables:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
         7: .line 105
            aload 2
            monitorexit
         8: goto 11
        end local 1 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair list
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        start local 1 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair list
        11: .line 122
      StackMap locals: com.google.common.util.concurrent.ExecutionList com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair
      StackMap stack:
            aconst_null
            astore 2 /* reversedList */
        start local 2 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair reversedList
        12: .line 123
            goto 17
        13: .line 124
      StackMap locals: com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair
      StackMap stack:
            aload 1 /* list */
            astore 3 /* tmp */
        start local 3 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair tmp
        14: .line 125
            aload 1 /* list */
            getfield com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.next:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
            astore 1 /* list */
        15: .line 126
            aload 3 /* tmp */
            aload 2 /* reversedList */
            putfield com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.next:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
        16: .line 127
            aload 3 /* tmp */
            astore 2 /* reversedList */
        end local 3 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair tmp
        17: .line 123
      StackMap locals:
      StackMap stack:
            aload 1 /* list */
            ifnonnull 13
        18: .line 129
            goto 21
        19: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* reversedList */
            getfield com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.runnable:Ljava/lang/Runnable;
            aload 2 /* reversedList */
            getfield com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.executor:Ljava/util/concurrent/Executor;
            invokestatic com.google.common.util.concurrent.ExecutionList.executeListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
        20: .line 131
            aload 2 /* reversedList */
            getfield com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.next:Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
            astore 2 /* reversedList */
        21: .line 129
      StackMap locals:
      StackMap stack:
            aload 2 /* reversedList */
            ifnonnull 19
        22: .line 133
            return
        end local 2 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair reversedList
        end local 1 // com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair list
        end local 0 // com.google.common.util.concurrent.ExecutionList this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0          this  Lcom/google/common/util/concurrent/ExecutionList;
            6    9     1          list  Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
           11   23     1          list  Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
           12   23     2  reversedList  Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
           14   17     3           tmp  Lcom/google/common/util/concurrent/ExecutionList$RunnableExecutorPair;
      Exception table:
        from    to  target  type
           1     3       9  any
           4     8       9  any
           9    10       9  any

  private static void executeListener(java.lang.Runnable, java.util.concurrent.Executor);
    descriptor: (Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Runnable runnable
        start local 1 // java.util.concurrent.Executor executor
         0: .line 141
            aload 1 /* executor */
            aload 0 /* runnable */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         1: .line 142
            goto 8
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
         2: astore 2 /* e */
        start local 2 // java.lang.RuntimeException e
         3: .line 146
            getstatic com.google.common.util.concurrent.ExecutionList.log:Ljava/util/logging/Logger;
         4: .line 147
            getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
         5: .line 148
            new java.lang.StringBuilder
            dup
            ldc "RuntimeException while executing runnable "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* runnable */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " with executor "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* executor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 149
            aload 2 /* e */
         7: .line 146
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.RuntimeException e
         8: .line 151
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.concurrent.Executor executor
        end local 0 // java.lang.Runnable runnable
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0  runnable  Ljava/lang/Runnable;
            0    9     1  executor  Ljava/util/concurrent/Executor;
            3    8     2         e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.RuntimeException
    MethodParameters:
          Name  Flags
      runnable  
      executor  
}
SourceFile: "ExecutionList.java"
NestMembers:
  com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair
InnerClasses:
  private final RunnableExecutorPair = com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair of com.google.common.util.concurrent.ExecutionList
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()