Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 12020)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 12025)
@@ -151,4 +151,5 @@
 
     private final ValueChangeListener<Object> invalidateListener = change -> invalidate();
+    private boolean isDestroyed;
 
     /**
@@ -271,5 +272,9 @@
      */
     @Override
-    public void destroy() {
+    public synchronized void destroy() {
+        if (isDestroyed) {
+            throw new IllegalStateException("The layer has already been destroyed: " + this);
+        }
+        isDestroyed = true;
         // Override in subclasses if needed
         removeColorPropertyListener();
