abstract class com.google.common.util.concurrent.AggregateFuture<InputT, OutputT> extends com.google.common.util.concurrent.AggregateFutureState<OutputT>
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.common.util.concurrent.AggregateFuture
  super_class: com.google.common.util.concurrent.AggregateFutureState
{
  private static final java.util.logging.Logger logger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private com.google.common.collect.ImmutableCollection<? extends com.google.common.util.concurrent.ListenableFuture<? extends InputT>> futures;
    descriptor: Lcom/google/common/collect/ImmutableCollection;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/google/common/collect/ImmutableCollection<+Lcom/google/common/util/concurrent/ListenableFuture<+TInputT;>;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  private final boolean allMustSucceed;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean collectsValues;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 43
            ldc Lcom/google/common/util/concurrent/AggregateFuture;
            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.AggregateFuture.logger:Ljava/util/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.google.common.collect.ImmutableCollection<? extends com.google.common.util.concurrent.ListenableFuture<? extends InputT>>, boolean, );
    descriptor: (Lcom/google/common/collect/ImmutableCollection;ZZ)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // com.google.common.collect.ImmutableCollection futures
        start local 2 // boolean allMustSucceed
        start local 3 // boolean collectsValues
         0: .line 64
            aload 0 /* this */
            aload 1 /* futures */
            invokevirtual com.google.common.collect.ImmutableCollection.size:()I
            invokespecial com.google.common.util.concurrent.AggregateFutureState.<init>:(I)V
         1: .line 65
            aload 0 /* this */
            aload 1 /* futures */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.common.collect.ImmutableCollection
            putfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
         2: .line 66
            aload 0 /* this */
            iload 2 /* allMustSucceed */
            putfield com.google.common.util.concurrent.AggregateFuture.allMustSucceed:Z
         3: .line 67
            aload 0 /* this */
            iload 3 /* collectsValues */
            putfield com.google.common.util.concurrent.AggregateFuture.collectsValues:Z
         4: .line 68
            return
        end local 3 // boolean collectsValues
        end local 2 // boolean allMustSucceed
        end local 1 // com.google.common.collect.ImmutableCollection futures
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0    5     1         futures  Lcom/google/common/collect/ImmutableCollection<+Lcom/google/common/util/concurrent/ListenableFuture<+TInputT;>;>;
            0    5     2  allMustSucceed  Z
            0    5     3  collectsValues  Z
    Signature: (Lcom/google/common/collect/ImmutableCollection<+Lcom/google/common/util/concurrent/ListenableFuture<+TInputT;>;>;ZZ)V
    MethodParameters:
                Name  Flags
      futures         
      allMustSucceed  
      collectsValues  

  protected final void afterDone();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
         0: .line 72
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.AggregateFutureState.afterDone:()V
         1: .line 74
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            astore 1 /* localFutures */
        start local 1 // com.google.common.collect.ImmutableCollection localFutures
         2: .line 75
            aload 0 /* this */
            getstatic com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason.OUTPUT_FUTURE_DONE:Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;
            invokevirtual com.google.common.util.concurrent.AggregateFuture.releaseResources:(Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;)V
         3: .line 77
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.isCancelled:()Z
            aload 1 /* localFutures */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection
      StackMap stack: int
         4: iconst_0
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection
      StackMap stack: int int
         5: iand
            ifeq 11
         6: .line 78
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.wasInterrupted:()Z
            istore 2 /* wasInterrupted */
        start local 2 // boolean wasInterrupted
         7: .line 79
            aload 1 /* localFutures */
            invokevirtual com.google.common.collect.ImmutableCollection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection int top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            astore 3 /* future */
        start local 3 // java.util.concurrent.Future future
         9: .line 80
            aload 3 /* future */
            iload 2 /* wasInterrupted */
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        end local 3 // java.util.concurrent.Future future
        10: .line 79
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 2 // boolean wasInterrupted
        11: .line 87
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection
      StackMap stack:
            return
        end local 1 // com.google.common.collect.ImmutableCollection localFutures
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            2   12     1    localFutures  Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<*>;>;
            7   11     2  wasInterrupted  Z
            9   10     3          future  Ljava/util/concurrent/Future<*>;

  protected final java.lang.String pendingToString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
         0: .line 91
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            astore 1 /* localFutures */
        start local 1 // com.google.common.collect.ImmutableCollection localFutures
         1: .line 92
            aload 1 /* localFutures */
            ifnull 3
         2: .line 93
            new java.lang.StringBuilder
            dup
            ldc "futures="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* localFutures */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         3: .line 95
      StackMap locals: com.google.common.collect.ImmutableCollection
      StackMap stack:
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.AggregateFutureState.pendingToString:()Ljava/lang/String;
            areturn
        end local 1 // com.google.common.collect.ImmutableCollection localFutures
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            1    4     1  localFutures  Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<*>;>;

  final void init();
    descriptor: ()V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
         0: .line 107
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            invokevirtual com.google.common.collect.ImmutableCollection.isEmpty:()Z
            ifeq 3
         1: .line 108
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.handleAllCompleted:()V
         2: .line 109
            return
         3: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.allMustSucceed:Z
            ifeq 14
         4: .line 125
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         5: .line 126
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            invokevirtual com.google.common.collect.ImmutableCollection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 12
      StackMap locals: com.google.common.util.concurrent.AggregateFuture int top java.util.Iterator
      StackMap stack:
         6: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.ListenableFuture
            astore 2 /* future */
        start local 2 // com.google.common.util.concurrent.ListenableFuture future
         7: .line 127
            iload 1 /* i */
            iinc 1 /* i */ 1
            istore 4 /* index */
        start local 4 // int index
         8: .line 128
            aload 2 /* future */
         9: .line 129
            new com.google.common.util.concurrent.AggregateFuture$1
            dup
            aload 0 /* this */
            aload 2 /* future */
            iload 4 /* index */
            invokespecial com.google.common.util.concurrent.AggregateFuture$1.<init>:(Lcom/google/common/util/concurrent/AggregateFuture;Lcom/google/common/util/concurrent/ListenableFuture;I)V
        10: .line 151
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
        11: .line 128
            invokeinterface com.google.common.util.concurrent.ListenableFuture.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
        end local 4 // int index
        end local 2 // com.google.common.util.concurrent.ListenableFuture future
        12: .line 126
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 1 // int i
        13: .line 153
            goto 23
        14: .line 171
      StackMap locals: com.google.common.util.concurrent.AggregateFuture
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.collectsValues:Z
            ifeq 15
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            goto 16
      StackMap locals:
      StackMap stack:
        15: aconst_null
        16: .line 170
      StackMap locals:
      StackMap stack: com.google.common.collect.ImmutableCollection
            astore 1 /* localFutures */
        start local 1 // com.google.common.collect.ImmutableCollection localFutures
        17: .line 173
            new com.google.common.util.concurrent.AggregateFuture$2
            dup
            aload 0 /* this */
            aload 1 /* localFutures */
            invokespecial com.google.common.util.concurrent.AggregateFuture$2.<init>:(Lcom/google/common/util/concurrent/AggregateFuture;Lcom/google/common/collect/ImmutableCollection;)V
        18: .line 172
            astore 2 /* listener */
        start local 2 // java.lang.Runnable listener
        19: .line 179
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
            invokevirtual com.google.common.collect.ImmutableCollection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 22
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection java.lang.Runnable top java.util.Iterator
      StackMap stack:
        20: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.ListenableFuture
            astore 3 /* future */
        start local 3 // com.google.common.util.concurrent.ListenableFuture future
        21: .line 180
            aload 3 /* future */
            aload 2 /* listener */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokeinterface com.google.common.util.concurrent.ListenableFuture.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
        end local 3 // com.google.common.util.concurrent.ListenableFuture future
        22: .line 179
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        end local 2 // java.lang.Runnable listener
        end local 1 // com.google.common.collect.ImmutableCollection localFutures
        23: .line 183
      StackMap locals: com.google.common.util.concurrent.AggregateFuture
      StackMap stack:
            return
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   24     0          this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            5   13     1             i  I
            7   12     2        future  Lcom/google/common/util/concurrent/ListenableFuture<+TInputT;>;
            8   12     4         index  I
           17   23     1  localFutures  Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<+TInputT;>;>;
           19   23     2      listener  Ljava/lang/Runnable;
           21   22     3        future  Lcom/google/common/util/concurrent/ListenableFuture<+TInputT;>;

  private void handleException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // java.lang.Throwable throwable
         0: .line 192
            aload 1 /* throwable */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 194
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AggregateFuture.allMustSucceed:Z
            ifeq 8
         2: .line 197
            aload 0 /* this */
            aload 1 /* throwable */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.setException:(Ljava/lang/Throwable;)Z
            istore 2 /* completedWithFailure */
        start local 2 // boolean completedWithFailure
         3: .line 198
            iload 2 /* completedWithFailure */
            ifne 8
         4: .line 201
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.getOrInitSeenExceptions:()Ljava/util/Set;
            aload 1 /* throwable */
            invokestatic com.google.common.util.concurrent.AggregateFuture.addCausalChain:(Ljava/util/Set;Ljava/lang/Throwable;)Z
            istore 3 /* firstTimeSeeingThisException */
        start local 3 // boolean firstTimeSeeingThisException
         5: .line 202
            iload 3 /* firstTimeSeeingThisException */
            ifeq 8
         6: .line 203
            aload 1 /* throwable */
            invokestatic com.google.common.util.concurrent.AggregateFuture.log:(Ljava/lang/Throwable;)V
         7: .line 204
            return
        end local 3 // boolean firstTimeSeeingThisException
        end local 2 // boolean completedWithFailure
         8: .line 213
      StackMap locals:
      StackMap stack:
            aload 1 /* throwable */
            instanceof java.lang.Error
            ifeq 10
         9: .line 221
            aload 1 /* throwable */
            invokestatic com.google.common.util.concurrent.AggregateFuture.log:(Ljava/lang/Throwable;)V
        10: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable throwable
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   11     0                          this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0   11     1                     throwable  Ljava/lang/Throwable;
            3    8     2          completedWithFailure  Z
            5    8     3  firstTimeSeeingThisException  Z
    MethodParameters:
           Name  Flags
      throwable  

  private static void log(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.lang.Throwable throwable
         0: .line 227
            aload 0 /* throwable */
            instanceof java.lang.Error
            ifeq 2
         1: .line 228
            ldc "Input Future failed with Error"
            goto 3
         2: .line 229
      StackMap locals:
      StackMap stack:
            ldc "Got more than one input Future failure. Logging failures after the first"
         3: .line 226
      StackMap locals:
      StackMap stack: java.lang.String
            astore 1 /* message */
        start local 1 // java.lang.String message
         4: .line 230
            getstatic com.google.common.util.concurrent.AggregateFuture.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
            aload 1 /* message */
            aload 0 /* throwable */
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 231
            return
        end local 1 // java.lang.String message
        end local 0 // java.lang.Throwable throwable
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0  throwable  Ljava/lang/Throwable;
            4    6     1    message  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      throwable  

  final void addInitialException(java.util.Set<java.lang.Throwable>);
    descriptor: (Ljava/util/Set;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // java.util.Set seen
         0: .line 235
            aload 1 /* seen */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 236
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.isCancelled:()Z
            ifne 3
         2: .line 238
            aload 1 /* seen */
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.tryInternalFastPathGetFailure:()Ljava/lang/Throwable;
            invokestatic com.google.common.util.concurrent.AggregateFuture.addCausalChain:(Ljava/util/Set;Ljava/lang/Throwable;)Z
            pop
         3: .line 240
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.Set seen
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0    4     1  seen  Ljava/util/Set<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/Set<Ljava/lang/Throwable;>;)V
    MethodParameters:
      Name  Flags
      seen  

  private void collectValueFromNonCancelledFuture(int, java.util.concurrent.Future<? extends InputT>);
    descriptor: (ILjava/util/concurrent/Future;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // int index
        start local 2 // java.util.concurrent.Future future
         0: .line 249
            aload 0 /* this */
            iload 1 /* index */
            aload 2 /* future */
            invokestatic com.google.common.util.concurrent.Futures.getDone:(Ljava/util/concurrent/Future;)Ljava/lang/Object;
            invokevirtual com.google.common.util.concurrent.AggregateFuture.collectOneValue:(ILjava/lang/Object;)V
         1: .line 250
            goto 7
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
         2: astore 3 /* e */
        start local 3 // java.util.concurrent.ExecutionException e
         3: .line 251
            aload 0 /* this */
            aload 3 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual com.google.common.util.concurrent.AggregateFuture.handleException:(Ljava/lang/Throwable;)V
        end local 3 // java.util.concurrent.ExecutionException e
         4: goto 7
         5: .line 252
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* t */
        start local 3 // java.lang.Throwable t
         6: .line 253
            aload 0 /* this */
            aload 3 /* t */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.handleException:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable t
         7: .line 255
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.concurrent.Future future
        end local 1 // int index
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0    8     1   index  I
            0    8     2  future  Ljava/util/concurrent/Future<+TInputT;>;
            3    4     3       e  Ljava/util/concurrent/ExecutionException;
            6    7     3       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.util.concurrent.ExecutionException
           0     1       5  Class java.lang.Throwable
    Signature: (ILjava/util/concurrent/Future<+TInputT;>;)V
    MethodParameters:
        Name  Flags
      index   
      future  

  private void decrementCountAndMaybeComplete(com.google.common.collect.ImmutableCollection<? extends java.util.concurrent.Future<? extends InputT>>);
    descriptor: (Lcom/google/common/collect/ImmutableCollection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // com.google.common.collect.ImmutableCollection futuresIfNeedToCollectAtCompletion
         0: .line 261
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.decrementRemainingAndGet:()I
            istore 2 /* newRemaining */
        start local 2 // int newRemaining
         1: .line 262
            iload 2 /* newRemaining */
            iflt 2
            iconst_1
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Less than 0 remaining futures"
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/Object;)V
         4: .line 263
            iload 2 /* newRemaining */
            ifne 6
         5: .line 264
            aload 0 /* this */
            aload 1 /* futuresIfNeedToCollectAtCompletion */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.processCompleted:(Lcom/google/common/collect/ImmutableCollection;)V
         6: .line 266
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int newRemaining
        end local 1 // com.google.common.collect.ImmutableCollection futuresIfNeedToCollectAtCompletion
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0    7     0                                this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0    7     1  futuresIfNeedToCollectAtCompletion  Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<+TInputT;>;>;
            1    7     2                        newRemaining  I
    Signature: (Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<+TInputT;>;>;)V
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                                    Name  Flags
      futuresIfNeedToCollectAtCompletion  

  private void processCompleted(com.google.common.collect.ImmutableCollection<? extends java.util.concurrent.Future<? extends InputT>>);
    descriptor: (Lcom/google/common/collect/ImmutableCollection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // com.google.common.collect.ImmutableCollection futuresIfNeedToCollectAtCompletion
         0: .line 272
            aload 1 /* futuresIfNeedToCollectAtCompletion */
            ifnull 8
         1: .line 273
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: .line 274
            aload 1 /* futuresIfNeedToCollectAtCompletion */
            invokevirtual com.google.common.collect.ImmutableCollection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            astore 3 /* future */
        start local 3 // java.util.concurrent.Future future
         4: .line 275
            aload 3 /* future */
            invokeinterface java.util.concurrent.Future.isCancelled:()Z
            ifne 6
         5: .line 276
            aload 0 /* this */
            iload 2 /* i */
            aload 3 /* future */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.collectValueFromNonCancelledFuture:(ILjava/util/concurrent/Future;)V
         6: .line 278
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection int java.util.concurrent.Future java.util.Iterator
      StackMap stack:
            iinc 2 /* i */ 1
        end local 3 // java.util.concurrent.Future future
         7: .line 274
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 2 // int i
         8: .line 281
      StackMap locals: com.google.common.util.concurrent.AggregateFuture com.google.common.collect.ImmutableCollection
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.clearSeenExceptions:()V
         9: .line 282
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AggregateFuture.handleAllCompleted:()V
        10: .line 290
            aload 0 /* this */
            getstatic com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason.ALL_INPUT_FUTURES_PROCESSED:Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;
            invokevirtual com.google.common.util.concurrent.AggregateFuture.releaseResources:(Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;)V
        11: .line 291
            return
        end local 1 // com.google.common.collect.ImmutableCollection futuresIfNeedToCollectAtCompletion
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0   12     0                                this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0   12     1  futuresIfNeedToCollectAtCompletion  Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<+TInputT;>;>;
            2    8     2                                   i  I
            4    7     3                              future  Ljava/util/concurrent/Future<+TInputT;>;
    Signature: (Lcom/google/common/collect/ImmutableCollection<+Ljava/util/concurrent/Future<+TInputT;>;>;)V
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                                    Name  Flags
      futuresIfNeedToCollectAtCompletion  

  void releaseResources(com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason);
    descriptor: (Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.AggregateFuture this
        start local 1 // com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason reason
         0: .line 306
            aload 1 /* reason */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 313
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.AggregateFuture.futures:Lcom/google/common/collect/ImmutableCollection;
         2: .line 314
            return
        end local 1 // com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason reason
        end local 0 // com.google.common.util.concurrent.AggregateFuture this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/google/common/util/concurrent/AggregateFuture<TInputT;TOutputT;>;
            0    3     1  reason  Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;
    Signature: (Lcom/google/common/util/concurrent/AggregateFuture$ReleaseResourcesReason;)V
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.ForOverride()
      com.google.errorprone.annotations.OverridingMethodsMustInvokeSuper()
    MethodParameters:
        Name  Flags
      reason  

  abstract void collectOneValue(int, );
    descriptor: (ILjava/lang/Object;)V
    flags: (0x0400) ACC_ABSTRACT
    Signature: (ITInputT;)V
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
             Name  Flags
      index        
      returnValue  

  abstract void handleAllCompleted();
    descriptor: ()V
    flags: (0x0400) ACC_ABSTRACT

  private static boolean addCausalChain(java.util.Set<java.lang.Throwable>, java.lang.Throwable);
    descriptor: (Ljava/util/Set;Ljava/lang/Throwable;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.Set seen
        start local 1 // java.lang.Throwable t
         0: .line 331
            goto 5
         1: .line 332
      StackMap locals:
      StackMap stack:
            aload 0 /* seen */
            aload 1 /* t */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            istore 2 /* firstTimeSeen */
        start local 2 // boolean firstTimeSeen
         2: .line 333
            iload 2 /* firstTimeSeen */
            ifne 4
         3: .line 340
            iconst_0
            ireturn
        end local 2 // boolean firstTimeSeen
         4: .line 331
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 1 /* t */
      StackMap locals:
      StackMap stack:
         5: aload 1 /* t */
            ifnonnull 1
         6: .line 343
            iconst_1
            ireturn
        end local 1 // java.lang.Throwable t
        end local 0 // java.util.Set seen
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           seen  Ljava/util/Set<Ljava/lang/Throwable;>;
            0    7     1              t  Ljava/lang/Throwable;
            2    4     2  firstTimeSeen  Z
    Signature: (Ljava/util/Set<Ljava/lang/Throwable;>;Ljava/lang/Throwable;)Z
    MethodParameters:
      Name  Flags
      seen  
      t     
}
Signature: <InputT:Ljava/lang/Object;OutputT:Ljava/lang/Object;>Lcom/google/common/util/concurrent/AggregateFutureState<TOutputT;>;
SourceFile: "AggregateFuture.java"
NestMembers:
  com.google.common.util.concurrent.AggregateFuture$1  com.google.common.util.concurrent.AggregateFuture$2  com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason
InnerClasses:
  com.google.common.util.concurrent.AggregateFuture$1
  com.google.common.util.concurrent.AggregateFuture$2
  final ReleaseResourcesReason = com.google.common.util.concurrent.AggregateFuture$ReleaseResourcesReason of com.google.common.util.concurrent.AggregateFuture
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtCompatible()