public class com.google.common.util.concurrent.ClosingFuture$Combiner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.google.common.util.concurrent.ClosingFuture$Combiner
  super_class: java.lang.Object
{
  private final com.google.common.util.concurrent.ClosingFuture$CloseableList closeables;
    descriptor: Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  protected final com.google.common.collect.ImmutableList<com.google.common.util.concurrent.ClosingFuture<?>> inputs;
    descriptor: Lcom/google/common/collect/ImmutableList;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lcom/google/common/collect/ImmutableList<Lcom/google/common/util/concurrent/ClosingFuture<*>;>;

  private static final com.google.common.base.Function<com.google.common.util.concurrent.ClosingFuture<?>, com.google.common.util.concurrent.FluentFuture<?>> INNER_FUTURE;
    descriptor: Lcom/google/common/base/Function;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/google/common/base/Function<Lcom/google/common/util/concurrent/ClosingFuture<*>;Lcom/google/common/util/concurrent/FluentFuture<*>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 1305
            new com.google.common.util.concurrent.ClosingFuture$Combiner$1
            dup
            invokespecial com.google.common.util.concurrent.ClosingFuture$Combiner$1.<init>:()V
         1: .line 1304
            putstatic com.google.common.util.concurrent.ClosingFuture$Combiner.INNER_FUTURE:Lcom/google/common/base/Function;
         2: .line 1310
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(boolean, java.lang.Iterable<? extends com.google.common.util.concurrent.ClosingFuture<?>>);
    descriptor: (ZLjava/lang/Iterable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
        start local 1 // boolean allMustSucceed
        start local 2 // java.lang.Iterable inputs
         0: .line 1200
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1155
            aload 0 /* this */
            new com.google.common.util.concurrent.ClosingFuture$CloseableList
            dup
            invokespecial com.google.common.util.concurrent.ClosingFuture$CloseableList.<init>:()V
            putfield com.google.common.util.concurrent.ClosingFuture$Combiner.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
         2: .line 1201
            aload 0 /* this */
            iload 1 /* allMustSucceed */
            putfield com.google.common.util.concurrent.ClosingFuture$Combiner.allMustSucceed:Z
         3: .line 1202
            aload 0 /* this */
            aload 2 /* inputs */
            invokestatic com.google.common.collect.ImmutableList.copyOf:(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableList;
            putfield com.google.common.util.concurrent.ClosingFuture$Combiner.inputs:Lcom/google/common/collect/ImmutableList;
         4: .line 1203
            aload 2 /* inputs */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: com.google.common.util.concurrent.ClosingFuture$Combiner int java.lang.Iterable top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.ClosingFuture
            astore 3 /* input */
        start local 3 // com.google.common.util.concurrent.ClosingFuture input
         6: .line 1204
            aload 3 /* input */
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$Combiner.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            invokevirtual com.google.common.util.concurrent.ClosingFuture.becomeSubsumedInto:(Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;)V
        end local 3 // com.google.common.util.concurrent.ClosingFuture input
         7: .line 1203
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 1206
            return
        end local 2 // java.lang.Iterable inputs
        end local 1 // boolean allMustSucceed
        end local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lcom/google/common/util/concurrent/ClosingFuture$Combiner;
            0    9     1  allMustSucceed  Z
            0    9     2          inputs  Ljava/lang/Iterable<+Lcom/google/common/util/concurrent/ClosingFuture<*>;>;
            6    7     3           input  Lcom/google/common/util/concurrent/ClosingFuture<*>;
    Signature: (ZLjava/lang/Iterable<+Lcom/google/common/util/concurrent/ClosingFuture<*>;>;)V
    MethodParameters:
                Name  Flags
      allMustSucceed  
      inputs          

  public <V> com.google.common.util.concurrent.ClosingFuture<V> call(com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable<V>, java.util.concurrent.Executor);
    descriptor: (Lcom/google/common/util/concurrent/ClosingFuture$Combiner$CombiningCallable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ClosingFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
        start local 1 // com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable combiningCallable
        start local 2 // java.util.concurrent.Executor executor
         0: .line 1225
            new com.google.common.util.concurrent.ClosingFuture$Combiner$2
            dup
            aload 0 /* this */
            aload 1 /* combiningCallable */
            invokespecial com.google.common.util.concurrent.ClosingFuture$Combiner$2.<init>:(Lcom/google/common/util/concurrent/ClosingFuture$Combiner;Lcom/google/common/util/concurrent/ClosingFuture$Combiner$CombiningCallable;)V
         1: .line 1224
            astore 3 /* callable */
        start local 3 // java.util.concurrent.Callable callable
         2: .line 1236
            new com.google.common.util.concurrent.ClosingFuture
            dup
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$Combiner.futureCombiner:()Lcom/google/common/util/concurrent/Futures$FutureCombiner;
            aload 3 /* callable */
            aload 2 /* executor */
            invokevirtual com.google.common.util.concurrent.Futures$FutureCombiner.call:(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
            invokespecial com.google.common.util.concurrent.ClosingFuture.<init>:(Lcom/google/common/util/concurrent/ListenableFuture;)V
            astore 4 /* derived */
        start local 4 // com.google.common.util.concurrent.ClosingFuture derived
         3: .line 1237
            aload 4 /* derived */
            getfield com.google.common.util.concurrent.ClosingFuture.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$Combiner.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         4: .line 1238
            aload 4 /* derived */
            areturn
        end local 4 // com.google.common.util.concurrent.ClosingFuture derived
        end local 3 // java.util.concurrent.Callable callable
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable combiningCallable
        end local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lcom/google/common/util/concurrent/ClosingFuture$Combiner;
            0    5     1  combiningCallable  Lcom/google/common/util/concurrent/ClosingFuture$Combiner$CombiningCallable<TV;>;
            0    5     2           executor  Ljava/util/concurrent/Executor;
            2    5     3           callable  Ljava/util/concurrent/Callable<TV;>;
            3    5     4            derived  Lcom/google/common/util/concurrent/ClosingFuture<TV;>;
    Signature: <V:Ljava/lang/Object;>(Lcom/google/common/util/concurrent/ClosingFuture$Combiner$CombiningCallable<TV;>;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ClosingFuture<TV;>;
    MethodParameters:
                   Name  Flags
      combiningCallable  final
      executor           

  public <V> com.google.common.util.concurrent.ClosingFuture<V> callAsync(com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable<V>, java.util.concurrent.Executor);
    descriptor: (Lcom/google/common/util/concurrent/ClosingFuture$Combiner$AsyncCombiningCallable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ClosingFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
        start local 1 // com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable combiningCallable
        start local 2 // java.util.concurrent.Executor executor
         0: .line 1281
            new com.google.common.util.concurrent.ClosingFuture$Combiner$3
            dup
            aload 0 /* this */
            aload 1 /* combiningCallable */
            invokespecial com.google.common.util.concurrent.ClosingFuture$Combiner$3.<init>:(Lcom/google/common/util/concurrent/ClosingFuture$Combiner;Lcom/google/common/util/concurrent/ClosingFuture$Combiner$AsyncCombiningCallable;)V
         1: .line 1280
            astore 3 /* asyncCallable */
        start local 3 // com.google.common.util.concurrent.AsyncCallable asyncCallable
         2: .line 1293
            new com.google.common.util.concurrent.ClosingFuture
            dup
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$Combiner.futureCombiner:()Lcom/google/common/util/concurrent/Futures$FutureCombiner;
            aload 3 /* asyncCallable */
            aload 2 /* executor */
            invokevirtual com.google.common.util.concurrent.Futures$FutureCombiner.callAsync:(Lcom/google/common/util/concurrent/AsyncCallable;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
            invokespecial com.google.common.util.concurrent.ClosingFuture.<init>:(Lcom/google/common/util/concurrent/ListenableFuture;)V
         3: .line 1292
            astore 4 /* derived */
        start local 4 // com.google.common.util.concurrent.ClosingFuture derived
         4: .line 1294
            aload 4 /* derived */
            getfield com.google.common.util.concurrent.ClosingFuture.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$Combiner.closeables:Lcom/google/common/util/concurrent/ClosingFuture$CloseableList;
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ClosingFuture$CloseableList.add:(Ljava/lang/AutoCloseable;Ljava/util/concurrent/Executor;)V
         5: .line 1295
            aload 4 /* derived */
            areturn
        end local 4 // com.google.common.util.concurrent.ClosingFuture derived
        end local 3 // com.google.common.util.concurrent.AsyncCallable asyncCallable
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable combiningCallable
        end local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Lcom/google/common/util/concurrent/ClosingFuture$Combiner;
            0    6     1  combiningCallable  Lcom/google/common/util/concurrent/ClosingFuture$Combiner$AsyncCombiningCallable<TV;>;
            0    6     2           executor  Ljava/util/concurrent/Executor;
            2    6     3      asyncCallable  Lcom/google/common/util/concurrent/AsyncCallable<TV;>;
            4    6     4            derived  Lcom/google/common/util/concurrent/ClosingFuture<TV;>;
    Signature: <V:Ljava/lang/Object;>(Lcom/google/common/util/concurrent/ClosingFuture$Combiner$AsyncCombiningCallable<TV;>;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ClosingFuture<TV;>;
    MethodParameters:
                   Name  Flags
      combiningCallable  final
      executor           

  private com.google.common.util.concurrent.Futures$FutureCombiner<java.lang.Object> futureCombiner();
    descriptor: ()Lcom/google/common/util/concurrent/Futures$FutureCombiner;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
         0: .line 1299
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$Combiner.allMustSucceed:Z
            ifeq 2
         1: .line 1300
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$Combiner.inputFutures:()Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.util.concurrent.Futures.whenAllSucceed:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/Futures$FutureCombiner;
            goto 3
         2: .line 1301
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ClosingFuture$Combiner.inputFutures:()Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.util.concurrent.Futures.whenAllComplete:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/Futures$FutureCombiner;
         3: .line 1299
      StackMap locals:
      StackMap stack: com.google.common.util.concurrent.Futures$FutureCombiner
            areturn
        end local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/util/concurrent/ClosingFuture$Combiner;
    Signature: ()Lcom/google/common/util/concurrent/Futures$FutureCombiner<Ljava/lang/Object;>;

  private com.google.common.collect.ImmutableList<com.google.common.util.concurrent.FluentFuture<?>> inputFutures();
    descriptor: ()Lcom/google/common/collect/ImmutableList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
         0: .line 1313
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ClosingFuture$Combiner.inputs:Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.collect.FluentIterable.from:(Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable;
            getstatic com.google.common.util.concurrent.ClosingFuture$Combiner.INNER_FUTURE:Lcom/google/common/base/Function;
            invokevirtual com.google.common.collect.FluentIterable.transform:(Lcom/google/common/base/Function;)Lcom/google/common/collect/FluentIterable;
            invokevirtual com.google.common.collect.FluentIterable.toList:()Lcom/google/common/collect/ImmutableList;
            areturn
        end local 0 // com.google.common.util.concurrent.ClosingFuture$Combiner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ClosingFuture$Combiner;
    Signature: ()Lcom/google/common/collect/ImmutableList<Lcom/google/common/util/concurrent/FluentFuture<*>;>;
}
SourceFile: "ClosingFuture.java"
NestHost: com.google.common.util.concurrent.ClosingFuture
InnerClasses:
  private final CloseableList = com.google.common.util.concurrent.ClosingFuture$CloseableList of com.google.common.util.concurrent.ClosingFuture
  public Combiner = com.google.common.util.concurrent.ClosingFuture$Combiner of com.google.common.util.concurrent.ClosingFuture
  com.google.common.util.concurrent.ClosingFuture$Combiner$1
  com.google.common.util.concurrent.ClosingFuture$Combiner$2
  com.google.common.util.concurrent.ClosingFuture$Combiner$3
  public abstract AsyncCombiningCallable = com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable of com.google.common.util.concurrent.ClosingFuture$Combiner
  public abstract CombiningCallable = com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable of com.google.common.util.concurrent.ClosingFuture$Combiner
  public final FutureCombiner = com.google.common.util.concurrent.Futures$FutureCombiner of com.google.common.util.concurrent.Futures
    RuntimeVisibleAnnotations: 
      com.google.errorprone.annotations.DoNotMock(value = "Use ClosingFuture.whenAllSucceed() or .whenAllComplete() instead.")