Index: trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 6859)
+++ trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 6862)
@@ -94,5 +94,5 @@
     @Override
     public String toString() {
-        return "WaySegment [way=" + way.getId() + ", lowerIndex=" + lowerIndex + "]";
+        return "WaySegment [way=" + way.getUniqueId() + ", lowerIndex=" + lowerIndex + "]";
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6859)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6862)
@@ -74,4 +74,5 @@
         Map<List<Way>, Set<WaySegment>> seenWays = new HashMap<List<Way>, Set<WaySegment>>(500);
 
+        Collection<TestError> preliminaryErrors = new ArrayList<TestError>();
         for (Set<WaySegment> duplicated : nodePairs.values()) {
             int ways = duplicated.size();
@@ -137,5 +138,5 @@
                     }
 
-                    errors.add(new TestError(this,
+                    preliminaryErrors.add(new TestError(this,
                             type < OVERLAPPING_HIGHWAY_AREA ? Severity.WARNING : Severity.OTHER,
                                     errortype, type, prims, duplicated));
@@ -148,4 +149,12 @@
             }
         }
+
+        // see ticket #9598 - only report if at least 3 segments are shared
+        for (TestError error : preliminaryErrors) {
+            if (error.getHighlighted().size() / error.getPrimitives().size() >= 3) {
+                errors.add(error);
+            }
+        }
+
         super.endTest();
         nodePairs = null;
