code: public static <T> Stream<T> create(final Iterator<? extends T> iterator) {
          if (iterator.hasNext()) {
              return new IteratorStream<T>(iterator);
          } else {
              return new EmptyStream<T>();
          }
      }
docs: Creates a new Stream over the elements returned by the supplied Iterator.
  
  @param iterator
  an Iterator returning non-null elements
  @param <T>
  the type of elements
  @return a Stream over the elements returned by the supplied Iterator