SynchronizedSet() requires manual synchronisation when iterating over it. When returning an iterator make a copy of the set first to avoid issues with users iterating.