Index: src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Node.java	(revision 2554)
+++ src/org/openstreetmap/josm/data/osm/Node.java	(working copy)
@@ -160,7 +160,7 @@
     }
 
     public int compareTo(OsmPrimitive o) {
-        return o instanceof Node ? Long.valueOf(getId()).compareTo(o.getId()) : 1;
+        return o instanceof Node ? Long.valueOf(getUniqueId()).compareTo(o.getUniqueId()) : 1;
     }
 
     @Override
Index: src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Relation.java	(revision 2554)
+++ src/org/openstreetmap/josm/data/osm/Relation.java	(working copy)
@@ -230,7 +230,7 @@
     }
 
     public int compareTo(OsmPrimitive o) {
-        return o instanceof Relation ? Long.valueOf(getId()).compareTo(o.getId()) : -1;
+        return o instanceof Relation ? Long.valueOf(getUniqueId()).compareTo(o.getUniqueId()) : -1;
     }
 
     // seems to be different from member "incomplete" - FIXME
Index: src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Way.java	(revision 2554)
+++ src/org/openstreetmap/josm/data/osm/Way.java	(working copy)
@@ -240,7 +240,7 @@
     public int compareTo(OsmPrimitive o) {
         if (o instanceof Relation)
             return 1;
-        return o instanceof Way ? Long.valueOf(getId()).compareTo(o.getId()) : -1;
+        return o instanceof Way ? Long.valueOf(getUniqueId()).compareTo(o.getUniqueId()) : -1;
     }
 
     public void removeNode(Node n) {
