Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 17585)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 17586)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.AbstractPrimitive;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -1713,5 +1714,5 @@
     private void stripTags(Collection<Way> ways) {
         Map<String, String> tagsToRemove = new HashMap<>();
-        ways.stream().flatMap(w -> w.keySet().stream()).forEach(k -> tagsToRemove.put(k, null));
+        ways.stream().flatMap(AbstractPrimitive::keys).forEach(k -> tagsToRemove.put(k, null));
         if (tagsToRemove.isEmpty())
             return;
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java	(revision 17585)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertFromGpxLayerAction.java	(revision 17586)
@@ -174,5 +174,5 @@
     public DataSet filterDataSet(DataSet ds, List<String> listPos) {
         for (OsmPrimitive p : ds.getPrimitives(p -> p instanceof Node || p instanceof Way)) {
-            for (String key : p.keySet()) {
+            p.visitKeys((primitive, key, value) -> {
                 String listkey;
                 if (listPos != null && key.startsWith(GpxConstants.GPX_PREFIX)) {
@@ -182,7 +182,7 @@
                 }
                 if (listPos == null || !listPos.contains(listkey)) {
-                   p.put(key, null);
-                }
-            }
+                    p.put(key, null);
+                }
+            });
         }
         return ds;
