Oops, I copied the wrong code too :) That said I don't know this code at all, but there are other instances of iteration that aren't synchronized. The reason I mentioned synchronizing the collection was from the JavaDoc

```
It is imperative that the user manually synchronize on the returned set when iterating over it:

  Set s = Collections.synchronizedSet(new HashSet());
      ...
  synchronized(s) {
      Iterator i = s.iterator(); // Must be in the synchronized block
      while (i.hasNext())
          foo(i.next());
  }
```

Anyway, you know this code way better than me so I'll just mind my own business :)