@Nonnull
    public static <T> Traverser<T> traverseIterator(@Nonnull Iterator<? extends T> iterator) {
        return () -> iterator.hasNext() ? requireNonNull(iterator.next(), "Iterator returned a null item") : null;
    }
@Test
    public void when_traverseIterator_then_seeAllItems() {
        validateTraversal(traverseIterator(Stream.of(1, 2).iterator()));
    }