class IteratorWithConcurrentModificationChecker implements Iterator<T> {

    @Override public T next() {
        try {
            T next = delegate.next();

            if (expCnt == 0)
                throw new ConcurrentModificationException(eMsg);

            expCnt--;

            return next;
        }
        catch (NoSuchElementException e) {
            if (expCnt == 0)
                throw e;
            else
                throw new ConcurrentModificationException(eMsg);
        }
    }

    public  IteratorWithConcurrentModificationChecker(Iterator<T> delegate, long expCnt, String eMsg);

}