Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 13318)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 13319)
@@ -13,5 +13,4 @@
 import java.util.EnumSet;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -415,14 +414,6 @@
         if ((newValue == null ^ oldValue == null)
                 || (newValue != null && oldValue != null && !Objects.equals(newValue.toCode(), oldValue.toCode()))) {
-            Iterator<WeakReference<ProjectionChangeListener>> it = listeners.iterator();
-            while (it.hasNext()) {
-                WeakReference<ProjectionChangeListener> wr = it.next();
-                ProjectionChangeListener listener = wr.get();
-                if (listener == null) {
-                    it.remove();
-                    continue;
-                }
-                listener.projectionChanged(oldValue, newValue);
-            }
+            listeners.removeIf(x -> x.get() == null);
+            listeners.forEach(x -> x.get().projectionChanged(oldValue, newValue));
             if (newValue != null && oldBounds != null && main != null) {
                 main.restoreOldBounds(oldBounds);
