Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 7485)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 7486)
@@ -148,5 +148,5 @@
     @Override
     public void visit(Way w) {
-        if (!w.isArea() && ElemStyles.hasAreaElemStyle(w, false)) {
+        if (!w.isArea() && ElemStyles.hasOnlyAreaElemStyle(w)) {
             List<Node> nodes = w.getNodes();
             if (nodes.size()<1) return; // fix zero nodes bug
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 7485)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 7486)
@@ -472,3 +472,29 @@
         return getAreaElemStyle(p, pretendWayIsClosed) != null;
     }
+
+    /**
+     * Determines whether primitive has <b>only</b> an AreaElemStyle.
+     * @param p the OSM primitive
+     * @return {@code true} if primitive has only an AreaElemStyle
+     * @since 7486
+     */
+    public static boolean hasOnlyAreaElemStyle(OsmPrimitive p) {
+        MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
+        try {
+            if (MapPaintStyles.getStyles() == null)
+                return false;
+            StyleList styles = MapPaintStyles.getStyles().generateStyles(p, 1.0, null, false).a;
+            if (styles.isEmpty()) {
+                return false;
+            }
+            for (ElemStyle s : styles) {
+                if (!(s instanceof AreaElemStyle)) {
+                    return false;
+                }
+            }
+            return true;
+        } finally {
+            MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
+        }
+    }
 }
