Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java	(revision 15845)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java	(revision 15846)
@@ -56,5 +56,7 @@
         getProgressMonitor().indeterminateSubTask(tr("Initializing nodes to download ..."));
         reader.setRecurseDownRelations(fullRelation);
-        reader.appendIds(ids);
+        if (ids != null) {
+            ids.forEach(reader::append);
+        }
     }
 }
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 15845)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 15846)
@@ -52,5 +52,4 @@
  * <pre>
  *    MultiFetchServerObjectReader reader = MultiFetchServerObjectReader()
- *         .append(2345,2334,4444)
  *         .append(new Node(72343));
  *    reader.parseOsm();
@@ -132,5 +131,5 @@
      * @param id  the id
      */
-    protected void remember(PrimitiveId id) {
+    public void append(PrimitiveId id) {
         if (id.isNew()) return;
         switch(id.getType()) {
@@ -153,14 +152,5 @@
     public MultiFetchServerObjectReader append(DataSet ds, long id, OsmPrimitiveType type) {
         OsmPrimitive p = ds.getPrimitiveById(id, type);
-        switch(type) {
-        case NODE:
-            return appendNode((Node) p);
-        case WAY:
-            return appendWay((Way) p);
-        case RELATION:
-            return appendRelation((Relation) p);
-        default:
-            return this;
-        }
+        return append(p);
     }
 
@@ -173,5 +163,5 @@
     public MultiFetchServerObjectReader appendNode(Node node) {
         if (node == null || node.isNew()) return this;
-        remember(node.getPrimitiveId());
+        append(node.getPrimitiveId());
         return this;
     }
@@ -186,11 +176,7 @@
         if (way == null || way.isNew()) return this;
         if (recurseDownAppended) {
-            for (Node node : way.getNodes()) {
-                if (!node.isNew()) {
-                    remember(node.getPrimitiveId());
-                }
-            }
-        }
-        remember(way.getPrimitiveId());
+            append(way.getNodes());
+        }
+        append(way.getPrimitiveId());
         return this;
     }
@@ -204,5 +190,5 @@
     protected MultiFetchServerObjectReader appendRelation(Relation relation) {
         if (relation == null || relation.isNew()) return this;
-        remember(relation.getPrimitiveId());
+        append(relation.getPrimitiveId());
         if (recurseDownAppended) {
             for (RelationMember member : relation.getMembers()) {
@@ -246,39 +232,5 @@
     public MultiFetchServerObjectReader append(Collection<? extends OsmPrimitive> primitives) {
         if (primitives == null) return this;
-        for (OsmPrimitive primitive : primitives) {
-            append(primitive);
-        }
-        return this;
-    }
-
-    /**
-     * appends a list of {@link PrimitiveId} to the list of ids which will be fetched from the server.
-     *
-     * @param ids the list of primitive Ids (ignored, if null)
-     * @return this
-     * @since 15811
-     *
-     */
-    public MultiFetchServerObjectReader appendIds(Collection<PrimitiveId> ids) {
-        if (ids == null)
-            return this;
-        for (PrimitiveId id : ids) {
-            if (id.isNew()) continue;
-            switch (id.getType()) {
-            case NODE:
-                nodes.add(id.getUniqueId());
-                break;
-            case WAY:
-            case CLOSEDWAY:
-                ways.add(id.getUniqueId());
-                break;
-            case MULTIPOLYGON:
-            case RELATION:
-                relations.add(id.getUniqueId());
-                break;
-            default:
-                throw new AssertionError();
-            }
-        }
+        primitives.forEach(this::append);
         return this;
     }
