Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 17999)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 18001)
@@ -238,7 +238,8 @@
      * @param ways ways to clone
      * @param relations relations to clone
-     * @since 17981
-     */
-    public void clonePrimitives(Iterable<Node> nodes, Iterable<Way> ways, Iterable<Relation> relations) {
+     * @return the map of cloned primitives indexed by their original version
+     * @since 18001
+     */
+    public Map<OsmPrimitive, OsmPrimitive> clonePrimitives(Iterable<Node> nodes, Iterable<Way> ways, Iterable<Relation> relations) {
         Map<OsmPrimitive, OsmPrimitive> primMap = new HashMap<>();
         for (Node n : nodes) {
@@ -268,4 +269,5 @@
                     .collect(Collectors.toList()));
         }
+        return primMap;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetValidation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetValidation.java	(revision 17999)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetValidation.java	(revision 18001)
@@ -80,9 +80,9 @@
         DataSet ds = new DataSet();
         Collection<OsmPrimitive> primitives = FilterModel.getAffectedPrimitives(singleton(original));
-        ds.clonePrimitives(
+        OsmPrimitive primitive = ds.clonePrimitives(
                 new SubclassFilteredCollection<>(primitives, INode.class::isInstance),
                 new SubclassFilteredCollection<>(primitives, IWay.class::isInstance),
-                new SubclassFilteredCollection<>(primitives, IRelation.class::isInstance));
-        OsmPrimitive primitive = ds.getPrimitiveById(original.getOsmPrimitiveId());
+                new SubclassFilteredCollection<>(primitives, IRelation.class::isInstance))
+                .get(original);
         Command command = TaggingPreset.createCommand(singleton(primitive), changedTags);
         if (command != null) {
