public static <T> Iterator<T> skipFirst(Iterator<T> iterator, @Nonnull Predicate<? super T> predicate) {
        checkNotNull(iterator, "iterator cannot be null.");
        while (iterator.hasNext()) {
            T object = iterator.next();
            if (!predicate.test(object)) {
                continue;
            }
            return prepend(object, iterator);
        }
        return iterator;
    }
@Test
    public void skipFirstNullIterator() {
        assertThatThrownBy(() -> IterableUtil.skipFirst(null, (i) -> false))
                .isInstanceOf(NullPointerException.class)
                .hasMessage("iterator cannot be null.");
    }