class FilterIterator extends AbstractIterator<E> {

    public FilterIterator(Iterator<? extends E> iterator, Predicate<? super E> filter) {
        Validate.notNull(iterator, "iterator must not be null");
        Validate.notNull(filter, "filter must not be null");
        this.iterator = iterator;
        this.filter = filter;
    }

    public  FilterIterator(Iterator<? extends E> iterator, Predicate<? super E> filter);

}