Сама коллекция должна его обнаружить. В стандартных библиотечных коллекциях это достигается наличием внутреннего номера версии, который изменяется каждой операцией и проверяется итератором на каждой итерации (т.е. каждый раз, когда вы вызываете MoveNext
, он проверяет, что номер версии совпадает с был когда итератор был создан).