Index: trunk/src/org/openstreetmap/josm/data/APIDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 11175)
+++ trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 11176)
@@ -16,5 +16,4 @@
 
 import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
-import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -22,5 +21,4 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -78,8 +76,9 @@
             }
         }
-        OsmPrimitiveComparator c = new OsmPrimitiveComparator(false, true);
-        toDelete.sort(c);
-        toAdd.sort(c);
-        toUpdate.sort(c);
+        final Comparator<OsmPrimitive> orderingNodesWaysRelations = Comparator.comparingInt(osm -> osm.getType().ordinal());
+        final Comparator<OsmPrimitive> byUniqueId = Comparator.comparing(OsmPrimitive::getUniqueId);
+        toAdd.sort(orderingNodesWaysRelations.thenComparing(byUniqueId));
+        toUpdate.sort(orderingNodesWaysRelations.thenComparing(byUniqueId));
+        toDelete.sort(orderingNodesWaysRelations.reversed().thenComparing(byUniqueId));
     }
 
