Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6869)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6870)
@@ -28,4 +28,6 @@
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Pair;
+import org.openstreetmap.josm.tools.Predicates;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -152,5 +154,6 @@
         // see ticket #9598 - only report if at least 3 segments are shared
         for (TestError error : preliminaryErrors) {
-            if (error.getHighlighted().size() / error.getPrimitives().size() >= 3) {
+            if (error.getHighlighted().size() / error.getPrimitives().size() >= 3
+                    && !Utils.exists(error.getPrimitives(), Predicates.hasKey("building"))) {
                 errors.add(error);
             }
Index: trunk/src/org/openstreetmap/josm/tools/Predicates.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 6869)
+++ trunk/src/org/openstreetmap/josm/tools/Predicates.java	(revision 6870)
@@ -87,4 +87,16 @@
 
     /**
+     * Returns a {@link Predicate} executing {@link OsmPrimitive#hasKey(String)}.
+     */
+    public static Predicate<OsmPrimitive> hasKey(final String key) {
+        return new Predicate<OsmPrimitive>() {
+            @Override
+            public boolean evaluate(OsmPrimitive p) {
+                return p.hasKey(key);
+            }
+        };
+    }
+
+    /**
      * Returns a {@link Predicate} executing {@link Collection#contains(Object)}.
      */
