code: public static <V> ListenableFuture<V> whenAnyComplete(Iterable<? extends ListenableFuture<? extends V>> futures)
      {
          requireNonNull(futures, "futures is null");
          checkArgument(!isEmpty(futures), "futures is empty");
  
          ExtendedSettableFuture<V> firstCompletedFuture = ExtendedSettableFuture.create();
          for (ListenableFuture<? extends V> future : futures) {
              firstCompletedFuture.setAsync(future);
          }
          return firstCompletedFuture;
      }
docs: Creates a future that completes when the first future completes either normally
  or exceptionally. Cancellation of the future propagates to the supplied futures.