class Streams {

  /**
   * Returns a sequential {@link Stream} of the contents of {@code iterable}, delegating to {@link
   * Collection#stream} if possible.
   * @param <T> the stream type
   * @param iterable the iterable to built the stream from
   * @return the stream built from the given {@link Iterable}
   */
  public static <T> Stream<T> stream(Iterable<T> iterable) {<FILL_FUNCTION_BODY>}

  public static <T> Stream<T> stream(Iterator<T> iterator) {
    return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
  }
}

    return (iterable instanceof Collection)
        ? ((Collection<T>) iterable).stream()
        : StreamSupport.stream(iterable.spliterator(), false);
  
<no_super_class>