public class com.google.common.util.concurrent.ClosingFuture$Combiner extends java.lang.Object
{
private final com.google.common.util.concurrent.ClosingFuture$CloseableList closeables;
private final boolean allMustSucceed;
protected final com.google.common.collect.ImmutableList inputs;
private static final com.google.common.base.Function INNER_FUTURE;
private void <init>(boolean, java.lang.Iterable)
{
java.util.Iterator v;
com.google.common.util.concurrent.ClosingFuture$Combiner v;
java.lang.Iterable v;
com.google.common.util.concurrent.ClosingFuture$CloseableList v, v;
com.google.common.collect.ImmutableList v;
java.lang.Object v;
boolean v, v;
v := @this: com.google.common.util.concurrent.ClosingFuture$Combiner;
v := @parameter: boolean;
v := @parameter: java.lang.Iterable;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new com.google.common.util.concurrent.ClosingFuture$CloseableList;
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$CloseableList: void <init>()>();
v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables> = v;
v.<com.google.common.util.concurrent.ClosingFuture$Combiner: boolean allMustSucceed> = v;
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList copyOf(java.lang.Iterable)>(v);
v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.collect.ImmutableList inputs> = v;
v = interfaceinvoke v.<java.lang.Iterable: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables>;
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture: void becomeSubsumedInto(com.google.common.util.concurrent.ClosingFuture$CloseableList)>(v);
goto label;
label:
return;
}
public com.google.common.util.concurrent.ClosingFuture call(com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable, java.util.concurrent.Executor)
{
com.google.common.util.concurrent.ClosingFuture$Combiner$1 v;
com.google.common.util.concurrent.ListenableFuture v;
java.util.concurrent.Executor v, v;
com.google.common.util.concurrent.Futures$FutureCombiner v;
com.google.common.util.concurrent.ClosingFuture$Combiner v;
com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable v;
com.google.common.util.concurrent.ClosingFuture$CloseableList v, v;
com.google.common.util.concurrent.ClosingFuture v;
v := @this: com.google.common.util.concurrent.ClosingFuture$Combiner;
v := @parameter: com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable;
v := @parameter: java.util.concurrent.Executor;
v = new com.google.common.util.concurrent.ClosingFuture$Combiner$1;
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner$1: void <init>(com.google.common.util.concurrent.ClosingFuture$Combiner,com.google.common.util.concurrent.ClosingFuture$Combiner$CombiningCallable)>(v, v);
v = new com.google.common.util.concurrent.ClosingFuture;
v = specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.Futures$FutureCombiner futureCombiner()>();
v = virtualinvoke v.<com.google.common.util.concurrent.Futures$FutureCombiner: com.google.common.util.concurrent.ListenableFuture call(java.util.concurrent.Callable,java.util.concurrent.Executor)>(v, v);
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture: void <init>(com.google.common.util.concurrent.ListenableFuture)>(v);
v = v.<com.google.common.util.concurrent.ClosingFuture: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables>;
v = v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.Executor directExecutor()>();
virtualinvoke v.<com.google.common.util.concurrent.ClosingFuture$CloseableList: void add(java.lang.AutoCloseable,java.util.concurrent.Executor)>(v, v);
return v;
}
public com.google.common.util.concurrent.ClosingFuture callAsync(com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable, java.util.concurrent.Executor)
{
com.google.common.util.concurrent.ListenableFuture v;
com.google.common.util.concurrent.ClosingFuture$Combiner$2 v;
java.util.concurrent.Executor v, v;
com.google.common.util.concurrent.Futures$FutureCombiner v;
com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable v;
com.google.common.util.concurrent.ClosingFuture$Combiner v;
com.google.common.util.concurrent.ClosingFuture$CloseableList v, v;
com.google.common.util.concurrent.ClosingFuture v;
v := @this: com.google.common.util.concurrent.ClosingFuture$Combiner;
v := @parameter: com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable;
v := @parameter: java.util.concurrent.Executor;
v = new com.google.common.util.concurrent.ClosingFuture$Combiner$2;
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner$2: void <init>(com.google.common.util.concurrent.ClosingFuture$Combiner,com.google.common.util.concurrent.ClosingFuture$Combiner$AsyncCombiningCallable)>(v, v);
v = new com.google.common.util.concurrent.ClosingFuture;
v = specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.Futures$FutureCombiner futureCombiner()>();
v = virtualinvoke v.<com.google.common.util.concurrent.Futures$FutureCombiner: com.google.common.util.concurrent.ListenableFuture callAsync(com.google.common.util.concurrent.AsyncCallable,java.util.concurrent.Executor)>(v, v);
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture: void <init>(com.google.common.util.concurrent.ListenableFuture)>(v);
v = v.<com.google.common.util.concurrent.ClosingFuture: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables>;
v = v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.util.concurrent.ClosingFuture$CloseableList closeables>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.Executor directExecutor()>();
virtualinvoke v.<com.google.common.util.concurrent.ClosingFuture$CloseableList: void add(java.lang.AutoCloseable,java.util.concurrent.Executor)>(v, v);
return v;
}
private com.google.common.util.concurrent.Futures$FutureCombiner futureCombiner()
{
com.google.common.collect.ImmutableList v, v;
com.google.common.util.concurrent.Futures$FutureCombiner v;
com.google.common.util.concurrent.ClosingFuture$Combiner v;
boolean v;
v := @this: com.google.common.util.concurrent.ClosingFuture$Combiner;
v = v.<com.google.common.util.concurrent.ClosingFuture$Combiner: boolean allMustSucceed>;
if v == 0 goto label;
v = specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.collect.ImmutableList inputFutures()>();
v = staticinvoke <com.google.common.util.concurrent.Futures: com.google.common.util.concurrent.Futures$FutureCombiner whenAllSucceed(java.lang.Iterable)>(v);
goto label;
label:
v = specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.collect.ImmutableList inputFutures()>();
v = staticinvoke <com.google.common.util.concurrent.Futures: com.google.common.util.concurrent.Futures$FutureCombiner whenAllComplete(java.lang.Iterable)>(v);
label:
return v;
}
private com.google.common.collect.ImmutableList inputFutures()
{
com.google.common.base.Function v;
com.google.common.collect.ImmutableList v, v;
com.google.common.collect.FluentIterable v, v;
com.google.common.util.concurrent.ClosingFuture$Combiner v;
v := @this: com.google.common.util.concurrent.ClosingFuture$Combiner;
v = v.<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.collect.ImmutableList inputs>;
v = staticinvoke <com.google.common.collect.FluentIterable: com.google.common.collect.FluentIterable 'from'(java.lang.Iterable)>(v);
v = <com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.base.Function INNER_FUTURE>;
v = virtualinvoke v.<com.google.common.collect.FluentIterable: com.google.common.collect.FluentIterable transform(com.google.common.base.Function)>(v);
v = virtualinvoke v.<com.google.common.collect.FluentIterable: com.google.common.collect.ImmutableList toList()>();
return v;
}
static void <clinit>()
{
com.google.common.util.concurrent.ClosingFuture$Combiner$3 v;
v = new com.google.common.util.concurrent.ClosingFuture$Combiner$3;
specialinvoke v.<com.google.common.util.concurrent.ClosingFuture$Combiner$3: void <init>()>();
<com.google.common.util.concurrent.ClosingFuture$Combiner: com.google.common.base.Function INNER_FUTURE> = v;
return;
}
}