Index: /trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 6140)
@@ -111,5 +111,5 @@
             }
             PrimitiveData copy = data.makeCopy();
-            copy.clearOsmId();
+            copy.clearOsmMetadata();
             if (data instanceof NodeData) {
                 newNodeIds.put(data.getUniqueId(), copy.getUniqueId());
Index: /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 6140)
@@ -200,9 +200,11 @@
 
     /**
-     * Clears the id and version known to the OSM API. The id and the version is set to 0.
-     * incomplete is set to false. It's preferred to use copy constructor with clearId set to true instead
+     * Clears the metadata, including id and version known to the OSM API.
+     * The id is a new unique id. The version, changeset and timestamp are set to 0.
+     * incomplete and deleted are set to false. It's preferred to use copy constructor with clearMetadata set to true instead
      * of calling this method.
-     */
-    public void clearOsmId() {
+     * @since 6140
+     */
+    public void clearOsmMetadata() {
         // Not part of dataset - no lock necessary
         this.id = generateUniqueId();
@@ -210,5 +212,8 @@
         this.user = null;
         this.changesetId = 0; // reset changeset id on a new object
+        this.timestamp = 0;
         this.setIncomplete(false);
+        this.setDeleted(false);
+        this.setVisible(true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 6140)
@@ -152,11 +152,11 @@
      * Constructs an identical clone of the argument.
      * @param clone The node to clone
-     * @param clearId If true, set version to 0 and id to new unique value
-     */
-    public Node(Node clone, boolean clearId) {
+     * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing
+     */
+    public Node(Node clone, boolean clearMetadata) {
         super(clone.getUniqueId(), true /* allow negative IDs */);
         cloneFrom(clone);
-        if (clearId) {
-            clearOsmId();
+        if (clearMetadata) {
+            clearOsmMetadata();
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 6140)
@@ -383,17 +383,18 @@
 
     /**
-     * Clears the id and version known to the OSM API. The id and the version is set to 0.
-     * incomplete is set to false. It's preferred to use copy constructor with clearId set to true instead
-     * of calling this method.
+     * Clears the metadata, including id and version known to the OSM API.
+     * The id is a new unique id. The version, changeset and timestamp are set to 0.
+     * incomplete and deleted are set to false. It's preferred to use copy constructor with clearMetadata set to true instead
      *
      * <strong>Caution</strong>: Do not use this method on primitives which are already added to a {@link DataSet}.
      *
      * @throws DataIntegrityProblemException If primitive was already added to the dataset
-     */
-    @Override
-    public void clearOsmId() {
+     * @since 6140
+     */
+    @Override
+    public void clearOsmMetadata() {
         if (dataSet != null)
             throw new DataIntegrityProblemException("Method cannot be called after primitive was added to the dataset");
-        super.clearOsmId();
+        super.clearOsmMetadata();
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 6140)
@@ -183,9 +183,14 @@
     }
 
-    public Relation(Relation clone, boolean clearId) {
+    /**
+     * Constructs an identical clone of the argument.
+     * @param clone The relation to clone
+     * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing
+     */
+    public Relation(Relation clone, boolean clearMetadata) {
         super(clone.getUniqueId(), true);
         cloneFrom(clone);
-        if (clearId) {
-            clearOsmId();
+        if (clearMetadata) {
+            clearOsmMetadata();
         }
     }
@@ -193,4 +198,5 @@
     /**
      * Create an identical clone of the argument (including the id)
+     * @param clone The relation to clone, including its id
      */
     public Relation(Relation clone) {
Index: /trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 6139)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 6140)
@@ -232,12 +232,12 @@
      * Contructs a new {@code Way} from an existing {@code Way}.
      * @param original The original {@code Way} to be identically cloned. Must not be null
-     * @param clearId If true, clears the OSM id as defined by {@link #clearOsmId}. If false, does nothing
+     * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing
      * @since 2410
      */
-    public Way(Way original, boolean clearId) {
+    public Way(Way original, boolean clearMetadata) {
         super(original.getUniqueId(), true);
         cloneFrom(original);
-        if (clearId) {
-            clearOsmId();
+        if (clearMetadata) {
+            clearOsmMetadata();
         }
     }
