You should note that every current implementation of iterator is fail-fast. That is, the iterator will throw a ConcurrentModificationException if the underlying Collection object is changed in some way.
Sun does add this to their
doc:
Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.