Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6300)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6301)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
@@ -54,4 +55,22 @@
     }
 
+    private boolean concernsArea(OsmPrimitive p) {
+        return p.get("landuse") != null
+                || "riverbank".equals(p.get("waterway"))
+                || p.get("natural") != null
+                || p.get("amenity") != null
+                || p.get("leisure") != null
+                || p.get("building") != null;
+    }
+    
+    private boolean parentMultipolygonConcernsArea(OsmPrimitive p) {
+        for (Relation r : OsmPrimitive.getFilteredList(p.getReferrers(), Relation.class)) {
+            if (r.isMultipolygon() && concernsArea(r) ) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
     @Override
     public void endTest() {
@@ -79,10 +98,5 @@
                         area++;
                     }
-                    if (ws.way.get("landuse") != null
-                            || "riverbank".equals(ws.way.get("waterway"))
-                            || ws.way.get("natural") != null
-                            || ws.way.get("amenity") != null
-                            || ws.way.get("leisure") != null
-                            || ws.way.get("building") != null) {
+                    if (concernsArea(ws.way) || parentMultipolygonConcernsArea(ws.way)) {
                         area++;
                         ways--;
