Index: trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 4102)
+++ trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 4103)
@@ -466,5 +466,6 @@
     /**
      * Sets the keys of this primitives to the key/value pairs in <code>keys</code>.
-     * If <code>keys</code> is null removes all existing key/value pairs.
+     * Old key/value pairs are removed.
+     * If <code>keys</code> is null, clears existing key/value pairs.
      *
      * @param keys the key/value pairs to set. If null, removes all existing key/value pairs.
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 4102)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 4103)
@@ -1035,6 +1035,5 @@
     protected void saveCommonAttributes(PrimitiveData data) {
         data.setId(id);
-        data.getKeys().clear();
-        data.getKeys().putAll(getKeys());
+        data.setKeys(getKeys());
         data.setTimestamp(getTimestamp());
         data.setUser(user);
