The following static method in Stream is unsafe.
public static <A> Stream<A> iteratorStream(final Iterator<A> it)
Due to Stream's use of WeakRef, when you visit the elements of Stream you can get a different result on the 2nd pass. (Internal mutable iterator keeps its state while cache is cleared)
I think this method should be avoided at all times because its behavior is unpredictable.