Index: trunk/src/org/openstreetmap/josm/data/APIDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 4533)
+++ trunk/src/org/openstreetmap/josm/data/APIDataSet.java	(revision 4534)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.conflict.ConflictCollection;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -216,5 +217,5 @@
     }
 
-    public void removeProcessed(Collection<OsmPrimitive> processed) {
+    public void removeProcessed(Collection<IPrimitive> processed) {
         if (processed == null) return;
         toAdd.removeAll(processed);
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java	(revision 4533)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadLayerTask.java	(revision 4534)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -43,5 +44,5 @@
     private Changeset changeset;
     private Collection<OsmPrimitive> toUpload;
-    private HashSet<OsmPrimitive> processedPrimitives;
+    private HashSet<IPrimitive> processedPrimitives;
     private UploadStrategySpecification strategy;
 
@@ -66,5 +67,5 @@
         this.changeset = changeset;
         this.strategy = strategy;
-        processedPrimitives = new HashSet<OsmPrimitive>();
+        processedPrimitives = new HashSet<IPrimitive>();
     }
 
@@ -93,5 +94,5 @@
             //
             System.out.println(tr("Warning: object ''{0}'' is already deleted on the server. Skipping this object and retrying to upload.", p.getDisplayName(DefaultNameFormatter.getInstance())));
-            processedPrimitives.addAll((Collection) writer.getProcessedPrimitives());
+            processedPrimitives.addAll(writer.getProcessedPrimitives());
             processedPrimitives.add(p);
             toUpload.removeAll(processedPrimitives);
@@ -124,5 +125,5 @@
                     if (isCanceled()) return;
                     writer.uploadOsm(strategy, toUpload, changeset, m);
-                    processedPrimitives.addAll((Collection) writer.getProcessedPrimitives()); // OsmPrimitive in => OsmPrimitive out
+                    processedPrimitives.addAll(writer.getProcessedPrimitives()); // OsmPrimitive in => OsmPrimitive out
                     break;
                 } catch(OsmApiPrimitiveGoneException e) {
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 4533)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java	(revision 4534)
@@ -9,5 +9,4 @@
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
 import java.util.HashSet;
 
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
+import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
@@ -45,5 +45,5 @@
     private OsmDataLayer layer;
     private Changeset changeset;
-    private HashSet<OsmPrimitive> processedPrimitives;
+    private HashSet<IPrimitive> processedPrimitives;
     private UploadStrategySpecification strategy;
 
@@ -70,5 +70,5 @@
         this.changeset = changeset;
         this.strategy = strategy;
-        this.processedPrimitives = new HashSet<OsmPrimitive>();
+        this.processedPrimitives = new HashSet<IPrimitive>();
     }
 
@@ -191,5 +191,5 @@
             System.out.println(tr("Warning: object ''{0}'' is already deleted on the server. Skipping this object and retrying to upload.", p.getDisplayName(DefaultNameFormatter.getInstance())));
             monitor.appendLogMessage(tr("Object ''{0}'' is already deleted. Skipping object in upload.",p.getDisplayName(DefaultNameFormatter.getInstance())));
-            processedPrimitives.addAll((Collection) writer.getProcessedPrimitives());
+            processedPrimitives.addAll(writer.getProcessedPrimitives());
             processedPrimitives.add(p);
             toUpload.removeProcessed(processedPrimitives);
@@ -245,5 +245,5 @@
                     recoverFromGoneOnServer(e, getProgressMonitor());
                 } catch(ChangesetClosedException e) {
-                    processedPrimitives.addAll((Collection) writer.getProcessedPrimitives()); // OsmPrimitive in => OsmPrimitive out
+                    processedPrimitives.addAll(writer.getProcessedPrimitives()); // OsmPrimitive in => OsmPrimitive out
                     changeset.setOpen(false);
                     switch(e.getSource()) {
@@ -270,5 +270,5 @@
                 } finally {
                     if (writer != null) {
-                        processedPrimitives.addAll((Collection) writer.getProcessedPrimitives());
+                        processedPrimitives.addAll(writer.getProcessedPrimitives());
                     }
                     synchronized(this) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 4533)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 4534)
@@ -51,4 +51,5 @@
 import org.openstreetmap.josm.data.osm.DataSource;
 import org.openstreetmap.josm.data.osm.DatasetConsistencyTest;
+import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -396,5 +397,5 @@
      *         May be <code>null</code>, which means nothing has been uploaded
      */
-    public void cleanupAfterUpload(final Collection<OsmPrimitive> processed) {
+    public void cleanupAfterUpload(final Collection<IPrimitive> processed) {
         // return immediately if an upload attempt failed
         if (processed == null || processed.isEmpty())
Index: trunk/src/org/openstreetmap/josm/tools/Diff.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Diff.java	(revision 4533)
+++ trunk/src/org/openstreetmap/josm/tools/Diff.java	(revision 4534)
@@ -75,5 +75,5 @@
      */
     public Diff(Object[] a,Object[] b) {
-        Hashtable h = new Hashtable(a.length + b.length);
+        Hashtable<Object, Integer> h = new Hashtable<Object, Integer>(a.length + b.length);
         filevec[0] = new file_data(a,h);
         filevec[1] = new file_data(b,h);
@@ -344,5 +344,5 @@
             int d = diag (xoff, xlim, yoff, ylim);
             int c = cost;
-            int f = fdiag[fdiagoff + d];
+            //int f = fdiag[fdiagoff + d];
             int b = bdiag[bdiagoff + d];
 
@@ -804,5 +804,5 @@
         }
 
-        file_data(Object[] data,Hashtable h) {
+        file_data(Object[] data,Hashtable<Object, Integer> h) {
             buffered_lines = data.length;
 
