package de.invesdwin.util.collections.iterable; import javax.annotation.concurrent.NotThreadSafe; @NotThreadSafe public abstract class ASkippingIterable<E> implements ICloseableIterable<E> { private final ICloseableIterable<? extends E> delegate; public ASkippingIterable(final ICloseableIterable<? extends E> delegate) { this.delegate = delegate; } @Override public ICloseableIterator<E> iterator() { return new ASkippingIterator<E>(delegate.iterator()) { @Override protected boolean skip(final E element) { return ASkippingIterable.this.skip(element); } }; } protected abstract boolean skip(final E element); }