Index: trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 6618)
+++ trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 6619)
@@ -8,4 +8,5 @@
  */
 public final class WaySegment implements Comparable<WaySegment> {
+    
     /**
      * The way.
@@ -19,4 +20,9 @@
     public int lowerIndex;
 
+    /**
+     * Constructs a new {@code WaySegment}.
+     * @param w The way
+     * @param i The node lower index
+     */
     public WaySegment(Way w, int i) {
         way = w;
@@ -51,5 +57,6 @@
     }
 
-    @Override public boolean equals(Object o) {
+    @Override
+    public boolean equals(Object o) {
         return o instanceof WaySegment
             && ((WaySegment) o).way == way
@@ -57,5 +64,6 @@
     }
 
-    @Override public int hashCode() {
+    @Override
+    public int hashCode() {
         return way.hashCode() ^ lowerIndex;
     }
@@ -83,3 +91,8 @@
                 s2.getSecondNode().getEastNorth().east(), s2.getSecondNode().getEastNorth().north());
     }
+
+    @Override
+    public String toString() {
+        return "WaySegment [way=" + way.getId() + ", lowerIndex=" + lowerIndex + "]";
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6618)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java	(revision 6619)
@@ -158,8 +158,9 @@
             @Override
             public int compare(WaySegment o1, WaySegment o2) {
-                return o1.way.getNode(o1.lowerIndex).compareTo(o2.way.getNode(o2.lowerIndex));
+                return o1.getFirstNode().compareTo(o2.getFirstNode());
             }
         });
         final Set<Integer> wayNodesToFix = new TreeSet<Integer>(Collections.reverseOrder());
+        
         for (int i = 0; i < w.getNodesCount() - 1; i++) {
             final boolean wasInSet = !segments.add(new WaySegment(w, i));
@@ -168,5 +169,5 @@
             }
         }
-        if (!wayNodesToFix.isEmpty()) {
+        if (wayNodesToFix.size() > 1) {
             final List<Node> newNodes = new ArrayList<Node>(w.getNodes());
             for (final int i : wayNodesToFix) {
