Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12106)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12107)
@@ -52,5 +52,4 @@
 import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
-import org.openstreetmap.josm.gui.layer.AbstractMapViewPaintable;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -124,7 +123,5 @@
          */
         public synchronized void addTo(MapViewPaintable p) {
-            if (p instanceof AbstractMapViewPaintable) {
-                ((AbstractMapViewPaintable) p).addInvalidationListener(this);
-            }
+            p.addInvalidationListener(this);
         }
 
@@ -134,7 +131,5 @@
          */
         public synchronized void removeFrom(MapViewPaintable p) {
-            if (p instanceof AbstractMapViewPaintable) {
-                ((AbstractMapViewPaintable) p).removeInvalidationListener(this);
-            }
+            p.removeInvalidationListener(this);
             invalidatedLayers.remove(p);
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java	(revision 12106)
+++ trunk/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java	(revision 12107)
@@ -70,16 +70,10 @@
     }
 
-    /**
-     * Adds a new paintable invalidation listener.
-     * @param l The listener to add.
-     */
+    @Override
     public void addInvalidationListener(PaintableInvalidationListener l) {
         invalidationListeners.add(l);
     }
 
-    /**
-     * Removes an added paintable invalidation listener.
-     * @param l The listener to remove.
-     */
+    @Override
     public void removeInvalidationListener(PaintableInvalidationListener l) {
         invalidationListeners.remove(l);
Index: trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 12106)
+++ trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 12107)
@@ -142,3 +142,20 @@
      */
     void paint(Graphics2D g, MapView mv, Bounds bbox);
+
+    /**
+     * Adds a new paintable invalidation listener.
+     * @param l The listener to add.
+     * @since 12107
+     */
+    default void addInvalidationListener(PaintableInvalidationListener l) {
+    }
+
+    /**
+     * Removes an added paintable invalidation listener. May throw an exception if the listener is added twice.
+     * @param l The listener to remove.
+     * @since 12107
+     */
+    default void removeInvalidationListener(PaintableInvalidationListener l) {
+    }
+
 }
