Fix for #3454 ISet iterator.remove() now throws UnsupportedOperationException

Backporting fix to maintenance branch.
The ISet iterator is now taken from a collection wrapped in `Collections.unmodifiableCollection`. Trying to remove items from it will result in UnsupportedOperationException.

Fixes #3454