Index: /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 15152)
@@ -18,4 +18,5 @@
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -367,8 +368,5 @@
 
         // put the nodes of all ways in a set
-        final Set<Node> allNodes = new HashSet<>();
-        for (WayData w : wayDataList) {
-            allNodes.addAll(w.wayNodes);
-        }
+        final Set<Node> allNodes = wayDataList.stream().flatMap(w -> w.wayNodes.stream()).collect(Collectors.toSet());
 
         // the new x and y value for each node
Index: /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 15152)
@@ -229,6 +229,5 @@
         if (newNodes.size() == w.getNodesCount()) return null;
 
-        Set<Node> delNodes = new HashSet<>();
-        delNodes.addAll(w.getNodes());
+        Set<Node> delNodes = new HashSet<>(w.getNodes());
         delNodes.removeAll(newNodes);
 
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 15152)
@@ -17,4 +17,5 @@
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -610,21 +611,19 @@
     }
 
-    protected void notifyWayPartOfRelation(final Iterable<Way> ways) {
-        final Set<String> affectedRelations = new HashSet<>();
-        for (Way way : ways) {
-            for (OsmPrimitive ref : way.getReferrers()) {
-                if (ref instanceof Relation && ref.isUsable()) {
-                    affectedRelations.add(ref.getDisplayName(DefaultNameFormatter.getInstance()));
-                }
-            }
-        }
+    protected void notifyWayPartOfRelation(final Collection<Way> ways) {
+        final Set<String> affectedRelations = ways.stream()
+                .flatMap(w -> w.getReferrers().stream())
+                .filter(ref -> ref instanceof Relation && ref.isUsable())
+                .map(ref -> ref.getDisplayName(DefaultNameFormatter.getInstance()))
+                .collect(Collectors.toSet());
         if (affectedRelations.isEmpty()) {
             return;
         }
 
+        final int size = affectedRelations.size();
         final String msg1 = trn("Unglueing affected {0} relation: {1}", "Unglueing affected {0} relations: {1}",
-                affectedRelations.size(), affectedRelations.size(), Utils.joinAsHtmlUnorderedList(affectedRelations));
+                size, size, Utils.joinAsHtmlUnorderedList(affectedRelations));
         final String msg2 = trn("Ensure that the relation has not been broken!", "Ensure that the relations have not been broken!",
-                affectedRelations.size());
+                size);
         new Notification("<html>" + msg1 + msg2).setIcon(JOptionPane.WARNING_MESSAGE).show();
     }
Index: /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 15152)
@@ -12,4 +12,5 @@
 import java.util.Set;
 import java.util.Stack;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -70,21 +71,13 @@
 
     protected Set<OsmPrimitive> getDeletedPrimitives(DataSet ds) {
-        Set<OsmPrimitive> ret = new HashSet<>();
-        for (OsmPrimitive p: ds.allPrimitives()) {
-            if (p.isDeleted() && !p.isNew() && p.isVisible() && p.isModified()) {
-                ret.add(p);
-            }
-        }
-        return ret;
+        return ds.allPrimitives().stream()
+                .filter(p -> p.isDeleted() && !p.isNew() && p.isVisible() && p.isModified())
+                .collect(Collectors.toSet());
     }
 
     protected Set<OsmPrimitive> getModifiedPrimitives(Collection<OsmPrimitive> primitives) {
-        Set<OsmPrimitive> ret = new HashSet<>();
-        for (OsmPrimitive p: primitives) {
-            if (p.isNewOrUndeleted() || (p.isModified() && !p.isIncomplete())) {
-                ret.add(p);
-            }
-        }
-        return ret;
+        return primitives.stream()
+                .filter(p -> p.isNewOrUndeleted() || (p.isModified() && !p.isIncomplete()))
+                .collect(Collectors.toSet());
     }
 
@@ -292,11 +285,5 @@
          */
         protected Set<OsmPrimitive> getPrimitivesToCheckForParents() {
-            Set<OsmPrimitive> ret = new HashSet<>();
-            for (OsmPrimitive p: toUpload) {
-                if (p.isDeleted() && !p.isNewOrUndeleted()) {
-                    ret.add(p);
-                }
-            }
-            return ret;
+            return toUpload.stream().filter(p -> p.isDeleted() && !p.isNewOrUndeleted()).collect(Collectors.toSet());
         }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/ChangesetHeaderDownloadTask.java	(revision 15152)
@@ -9,5 +9,7 @@
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.data.osm.Changeset;
@@ -16,5 +18,4 @@
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.io.OsmTransferException;
-import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.xml.sax.SAXException;
 
@@ -134,17 +135,10 @@
      * @param changesets the collection of changesets. Assumes an empty collection if null.
      * @return the download task
-     * @throws IllegalArgumentException if parent is null
+     * @throws NullPointerException if parent is null
      */
     public static ChangesetHeaderDownloadTask buildTaskForChangesets(Component parent, Collection<Changeset> changesets) {
-        CheckParameterUtil.ensureParameterNotNull(parent, "parent");
-
-        Set<Integer> ids = new HashSet<>();
-        for (Changeset cs: changesets != null ? changesets : Collections.<Changeset>emptyList()) {
-            if (cs == null || cs.isNew()) {
-                continue;
-            }
-            ids.add(cs.getId());
-        }
-        return new ChangesetHeaderDownloadTask(parent, ids);
+        return new ChangesetHeaderDownloadTask(Objects.requireNonNull(parent, "parent"),
+                changesets == null ? Collections.<Integer>emptySet() :
+                    changesets.stream().filter(cs -> cs != null && !cs.isNew()).map(Changeset::getId).collect(Collectors.toSet()));
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java	(revision 15152)
@@ -9,8 +9,8 @@
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -148,11 +148,7 @@
         Collection<Way> ways = ds.getWays();
 
-        DataSetMerger merger;
         if (!ways.isEmpty()) {
-            Set<Node> nodes = new HashSet<>();
-            for (Way w: ways) {
-                // Ensure each node is only listed once
-                nodes.addAll(w.getNodes());
-            }
+            // Ensure each node is only listed once
+            Set<Node> nodes = ways.stream().flatMap(w -> w.getNodes().stream()).collect(Collectors.toSet());
             // Don't retrieve any nodes we've already grabbed
             nodes.removeAll(targetLayer.data.getNodes());
@@ -164,10 +160,8 @@
                     reader = null;
                 }
-                merger = new DataSetMerger(ds, wayNodes);
-                merger.merge();
+                new DataSetMerger(ds, wayNodes).merge();
             }
         }
-        merger = new DataSetMerger(parents, ds);
-        merger.merge();
+        new DataSetMerger(parents, ds).merge();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 15152)
@@ -11,12 +11,13 @@
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -126,11 +127,5 @@
      */
     protected Set<OsmPrimitive> getCompletePrimitives(DataSet ds) {
-        Set<OsmPrimitive> ret = new HashSet<>();
-        for (OsmPrimitive primitive : ds.allPrimitives()) {
-            if (!primitive.isIncomplete() && !primitive.isNew()) {
-                ret.add(primitive);
-            }
-        }
-        return ret;
+        return ds.allPrimitives().stream().filter(p -> !p.isIncomplete() && !p.isNew()).collect(Collectors.toSet());
     }
 
@@ -210,14 +205,10 @@
      */
     public Set<OsmPrimitive> getDownloadedPrimitives() {
-        Set<OsmPrimitive> ret = new HashSet<>();
-        for (DownloadTask task : tasks) {
-            if (task instanceof DownloadOsmTask) {
-                DataSet ds = ((DownloadOsmTask) task).getDownloadedData();
-                if (ds != null) {
-                    ret.addAll(ds.allPrimitives());
-                }
-            }
-        }
-        return ret;
+        return tasks.stream()
+                .filter(t -> t instanceof DownloadOsmTask)
+                .map(t -> ((DownloadOsmTask) t).getDownloadedData())
+                .filter(Objects::nonNull)
+                .flatMap(ds -> ds.allPrimitives().stream())
+                .collect(Collectors.toSet());
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 15152)
@@ -202,5 +202,4 @@
             return;
 
-        Set<OsmPrimitive> newHighlights = new HashSet<>();
         DeleteParameters parameters = getDeleteParameters(e, modifiers);
 
@@ -208,16 +207,11 @@
             // deleting segments is the only action not working on OsmPrimitives
             // so we have to handle them separately.
-            repaintIfRequired(newHighlights, parameters.nearestSegment);
+            repaintIfRequired(Collections.emptySet(), parameters.nearestSegment);
         } else {
             // don't call buildDeleteCommands for DeleteMode.segment because it doesn't support
             // silent operation and SplitWayAction will show dialogs. A lot.
             Command delCmd = buildDeleteCommands(e, modifiers, true);
-            if (delCmd != null) {
-                // all other cases delete OsmPrimitives directly, so we can safely do the following
-                for (OsmPrimitive osm : delCmd.getParticipatingPrimitives()) {
-                    newHighlights.add(osm);
-                }
-            }
-            repaintIfRequired(newHighlights, null);
+            // all other cases delete OsmPrimitives directly, so we can safely do the following
+            repaintIfRequired(delCmd == null ? Collections.emptySet() : new HashSet<>(delCmd.getParticipatingPrimitives()), null);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 15152)
@@ -6,6 +6,6 @@
 import java.awt.event.ActionEvent;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.data.osm.IPrimitive;
@@ -42,9 +42,7 @@
      */
     public static Set<IPrimitive> buildSetOfIncompleteMembers(Collection<IRelation<?>> rels) {
-        Set<IPrimitive> ret = new HashSet<>();
-        for (IRelation<?> r : rels) {
-            ret.addAll(SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()));
-        }
-        return ret;
+        return rels.stream()
+                .flatMap(r -> SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()).stream())
+                .collect(Collectors.toSet());
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java	(revision 15152)
@@ -7,6 +7,7 @@
 import java.awt.event.ActionEvent;
 import java.util.Collection;
-import java.util.HashSet;
+import java.util.Collections;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JOptionPane;
@@ -46,17 +47,12 @@
      */
     public static Set<RelationMember> getMembersForCurrentSelection(Relation r) {
-        Set<RelationMember> members = new HashSet<>();
         if (MainApplication.isDisplayingMapView()) {
             OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
             if (editLayer != null && editLayer.data != null) {
                 Collection<OsmPrimitive> selection = editLayer.data.getSelected();
-                for (RelationMember member: r.getMembers()) {
-                    if (selection.contains(member.getMember())) {
-                        members.add(member);
-                    }
-                }
+                return r.getMembers().stream().filter(m -> selection.contains(m.getMember())).collect(Collectors.toSet());
             }
         }
-        return members;
+        return Collections.emptySet();
     }
 
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 15151)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 15152)
@@ -4,11 +4,9 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.util.Collection;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
@@ -75,9 +73,5 @@
                 if (downloaded != null) {
                     GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
-                    Collection<OsmPrimitive> downlPrim = new HashSet<>();
-                    for (PrimitiveId id : downloaded) {
-                        downlPrim.add(ds.getPrimitiveById(id));
-                    }
-                    AddTagsDialog.addTags(args, sender, downlPrim);
+                    AddTagsDialog.addTags(args, sender, downloaded.stream().map(ds::getPrimitiveById).collect(Collectors.toSet()));
                 }
                 ps.clear();
