The iterator is working on a copy of the data (objects are not copied, but the array containing the object references), otherwise nested iterations would not be possible. So on modification both data arrays have to be updated (in collection and iterator instance).
I know, not very nice. That's the reason, why I made the iterator instances readonly first.