Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 13321)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 13322)
@@ -431,11 +431,9 @@
     public static void addProjectionChangeListener(ProjectionChangeListener listener) {
         if (listener == null) return;
-        synchronized (Main.class) {
-            for (WeakReference<ProjectionChangeListener> wr : listeners) {
-                // already registered ? => abort
-                if (wr.get() == listener) return;
-            }
-            listeners.add(new WeakReference<>(listener));
-        }
+        for (WeakReference<ProjectionChangeListener> wr : listeners) {
+            // already registered ? => abort
+            if (wr.get() == listener) return;
+        }
+        listeners.add(new WeakReference<>(listener));
     }
 
@@ -447,9 +445,14 @@
     public static void removeProjectionChangeListener(ProjectionChangeListener listener) {
         if (listener == null) return;
-        synchronized (Main.class) {
-            // remove the listener - and any other listener which got garbage
-            // collected in the meantime
-            listeners.removeIf(wr -> wr.get() == null || wr.get() == listener);
-        }
+        // remove the listener - and any other listener which got garbage collected in the meantime
+        listeners.removeIf(wr -> wr.get() == null || wr.get() == listener);
+    }
+
+    /**
+     * Remove all projection change listeners. For testing purposes only.
+     * @since 13322
+     */
+    public static void clearProjectionChangeListeners() {
+        listeners.clear();
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 13321)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 13322)
@@ -510,4 +510,5 @@
 
         // TODO: Remove global listeners and other global state.
+        Main.clearProjectionChangeListeners();
         Main.pref.resetToInitialState();
         Main.platform = null;
