Index: trunk/src/org/openstreetmap/josm/data/osm/NodeData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/NodeData.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/data/osm/NodeData.java	(revision 9891)
@@ -9,4 +9,5 @@
 public class NodeData extends PrimitiveData implements INode {
 
+    private static final long serialVersionUID = 5626323599550908773L;
     /*
      * we "inline" lat/lon coordinates instead of using a LatLon => reduces memory footprint
Index: trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java	(revision 9891)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -15,5 +16,7 @@
  * reported by events
  */
-public abstract class PrimitiveData extends AbstractPrimitive {
+public abstract class PrimitiveData extends AbstractPrimitive implements Serializable {
+
+    private static final long serialVersionUID = -1044837092478109138L;
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationData.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationData.java	(revision 9891)
@@ -9,4 +9,5 @@
 public class RelationData extends PrimitiveData implements IRelation {
 
+    private static final long serialVersionUID = 1163664954890478565L;
     private List<RelationMemberData> members = new ArrayList<>();
 
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java	(revision 9891)
@@ -2,8 +2,10 @@
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.Objects;
 
-public class RelationMemberData implements PrimitiveId {
+public class RelationMemberData implements PrimitiveId, Serializable {
 
+    private static final long serialVersionUID = 381392198209333319L;
     private final String role;
     private final long memberId;
Index: trunk/src/org/openstreetmap/josm/data/osm/WayData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 9891)
@@ -9,4 +9,5 @@
 public class WayData extends PrimitiveData implements IWay {
 
+    private static final long serialVersionUID = 106944939313286415L;
     private List<Long> nodes = new ArrayList<>();
 
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java	(revision 9891)
@@ -5,4 +5,5 @@
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -11,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -21,8 +23,10 @@
      * A wrapper for a collection of {@link PrimitiveData}.
      */
-    public static final class Data {
+    public static final class Data implements Serializable {
+        private static final long serialVersionUID = -1485089993600213704L;
         private final Collection<PrimitiveData> primitiveData;
 
         private Data(Collection<PrimitiveData> primitiveData) {
+            CheckParameterUtil.ensureThat(primitiveData instanceof Serializable, "primitiveData must be instanceof Serializable");
             this.primitiveData = primitiveData;
         }
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java	(revision 9890)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java	(revision 9891)
@@ -5,4 +5,5 @@
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -11,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -21,8 +23,10 @@
      * A wrapper for a collection of {@link RelationMemberData}.
      */
-    public static final class Data {
+    public static final class Data implements Serializable {
+        private static final long serialVersionUID = -8432393711635811029L;
         private final Collection<RelationMemberData> relationMemberDatas;
 
         private Data(Collection<RelationMemberData> primitiveData) {
+            CheckParameterUtil.ensureThat(primitiveData instanceof Serializable, "primitiveData must be instanceof Serializable");
             this.relationMemberDatas = primitiveData;
         }
