guava/src/com/google/common/util/concurrent/Futures.java
@Beta
  @SafeVarargs
  public static <V> ListenableFuture<List<V>> allAsList(ListenableFuture<? extends V>... futures) {
    return new ListFuture<V>(ImmutableList.copyOf(futures), true);
  }
@Beta
  @SafeVarargs
  public static <V> ListenableFuture<List<V>> allAsList(ListenableFuture<? extends V>... futures) {
    return new ListFuture<V>(ImmutableList.copyOf(futures), true);
  }
Creates a new {@code ListenableFuture} whose value is a list containing the values of all its
input futures, if all succeed.

<p>The list of results is in the same order as the input list.

<p>Canceling this future will attempt to cancel all the component futures, and if any of the
provided futures fails or is canceled, this one is, too.

@param futures futures to combine
@return a future that provides a list of the results of the component futures
@since 10.0