code: public static <T, C extends Collection<? super T>> C toCollection(
          Iterable<T> iterable, C collection)
      {
          Objects.requireNonNull(iterable, "The iterable is null");
          Objects.requireNonNull(collection, "The collection is null");
          return Iterators.toCollection(iterable.iterator(), collection);
      }
docs: Drains all elements that are provided by the iterator of
  the given iterable into the given collection
  
  @param <T> The element type
  @param <C> The collection type
  @param iterable The iterable
  @param collection The target collection
  @return The given collection