@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(expected = NullPointerException.class)
    public void when_traverseIteratorWithNull_then_failure() {
        Traverser<Integer> trav = traverseIterator(asList(1, null).iterator());
        trav.next();
        trav.next();
    }