Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java	(revision 4624)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java	(revision 4626)
@@ -50,4 +50,8 @@
 
     public final Multipolygon get(NavigatableComponent nc, Relation r) {
+        return get(nc, r, false);
+    }
+
+    public final Multipolygon get(NavigatableComponent nc, Relation r, boolean forceRefresh) {
         Multipolygon multipolygon = null;
         if (nc != null && r != null) {
@@ -61,5 +65,5 @@
             }
             multipolygon = map2.get(r);
-            if (multipolygon == null) {
+            if (multipolygon == null || forceRefresh) {
                 map2.put(r, multipolygon = new Multipolygon(nc, r));
             }
@@ -130,5 +134,5 @@
                     removeMultipolygonFrom((Relation) p, maps);
                     
-                } else if (p instanceof Way) {
+                } else if (p instanceof Way && p.getDataSet() != null) {
                     for (OsmPrimitive ref : p.getReferrers()) {
                         if (isMultipolygon(ref)) {
@@ -139,5 +143,5 @@
                         }
                     }
-                } else if (p instanceof Node) {
+                } else if (p instanceof Node && p.getDataSet() != null) {
                     maps = removeMultipolygonsReferringTo(p.getReferrers(), ds, maps);
                 }
