Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 3039)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 3040)
@@ -35,7 +35,7 @@
     /**
      * A map of all primitives that got replaced with other primitives.
-     * Key is the primitive id in their dataset, the value is the id in my dataset
-     */
-    private final Map<Long, Long> mergedMap;
+     * Key is the PrimitiveId in their dataset, the value is the PrimitiveId in my dataset
+     */
+    private final Map<PrimitiveId, PrimitiveId> mergedMap;
     /** a set of primitive ids for which we have to fix references (to nodes and
      * to relation members) after the first phase of merging
@@ -58,5 +58,5 @@
         this.sourceDataSet = sourceDataSet;
         conflicts = new ConflictCollection();
-        mergedMap = new HashMap<Long, Long>();
+        mergedMap = new HashMap<PrimitiveId, PrimitiveId>();
         objectsWithChildrenToMerge = new HashSet<PrimitiveId>();
         deletedObjectsToUnlink = new HashSet<OsmPrimitive>();
@@ -106,5 +106,5 @@
                 }
                 if (target.hasEqualSemanticAttributes(source)) {
-                    mergedMap.put(source.getUniqueId(), target.getUniqueId());
+                    mergedMap.put(source.getPrimitiveId(), target.getPrimitiveId());
                     // copy the technical attributes from other
                     // version
@@ -131,13 +131,13 @@
         target.mergeFrom(source);
         targetDataSet.addPrimitive(target);
-        mergedMap.put(source.getUniqueId(), target.getUniqueId());
+        mergedMap.put(source.getPrimitiveId(), target.getPrimitiveId());
         objectsWithChildrenToMerge.add(source.getPrimitiveId());
     }
 
     protected OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) throws IllegalStateException{
-        Long targetId = mergedMap.get(mergeSource.getUniqueId());
+        PrimitiveId targetId = mergedMap.get(mergeSource.getPrimitiveId());
         if (targetId == null)
             return null;
-        return targetDataSet.getPrimitiveById(targetId, mergeSource.getType());
+        return targetDataSet.getPrimitiveById(targetId);
     }
 
@@ -278,5 +278,5 @@
             return false;
         // found a corresponding target, remember it
-        mergedMap.put(source.getUniqueId(), target.getUniqueId());
+        mergedMap.put(source.getPrimitiveId(), target.getPrimitiveId());
 
         if (target.getVersion() > source.getVersion())
