Index: trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java	(revision 10867)
+++ trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java	(revision 10868)
@@ -55,5 +55,5 @@
     public String toString() {
         StringBuilder builder = new StringBuilder();
-        builder.append(id).append(Arrays.toString(keys)).append(getFlagsAsString());
+        builder.append(id).append(' ').append(Arrays.toString(keys)).append(' ').append(getFlagsAsString());
         return builder.toString();
     }
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java	(revision 10867)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java	(revision 10868)
@@ -150,10 +150,5 @@
      */
     public boolean hasIncompleteData() {
-        for (PrimitiveData pd : getAll()) {
-            if (pd.isIncomplete()) {
-                return true;
-            }
-        }
-        return false;
+        return getAll().stream().anyMatch(p -> p.isIncomplete() || !p.isVisible());
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(revision 10867)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java	(revision 10868)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
@@ -67,11 +68,15 @@
         // Update references in copied buffer
         for (PrimitiveData data : bufferCopy) {
-            if (data instanceof NodeData) {
-                NodeData nodeData = (NodeData) data;
-                nodeData.setEastNorth(nodeData.getEastNorth().add(offset));
-            } else if (data instanceof WayData) {
-                updateNodes(newIds.get(OsmPrimitiveType.NODE), data);
-            } else if (data instanceof RelationData) {
-                updateMembers(newIds, data);
+            try {
+                if (data instanceof NodeData) {
+                    NodeData nodeData = (NodeData) data;
+                    nodeData.setEastNorth(nodeData.getEastNorth().add(offset));
+                } else if (data instanceof WayData) {
+                    updateNodes(newIds.get(OsmPrimitiveType.NODE), data);
+                } else if (data instanceof RelationData) {
+                    updateMembers(newIds, data);
+                }
+            } catch (RuntimeException e) {
+                throw BugReport.intercept(e).put("data", data);
             }
         }
@@ -87,5 +92,5 @@
 
         for (PrimitiveData data : pasteBuffer.getAll()) {
-            if (data.isIncomplete()) {
+            if (data.isIncomplete() || !data.isVisible()) {
                 continue;
             }
