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;
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java	(revision 17585)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java	(revision 17586)
@@ -36,5 +36,5 @@
         final OsmPrimitive p = OsmUtils.createPrimitive("way name=Foo railway=rail");
         assertTrue(p instanceof Way);
-        assertEquals(2, p.keySet().size());
+        assertEquals(2, p.getKeys().size());
         assertEquals("Foo", p.get("name"));
         assertEquals("rail", p.get("railway"));
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17585)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java	(revision 17586)
@@ -280,5 +280,5 @@
 
         tagRegex(way1, "way[ref][count(tag_regex(\"ref\")) > 1] {}", new Boolean[] {true, false, false, true, false});
-        way1.keySet().forEach(key -> way1.put(key, null));
+        way1.visitKeys((primitive, key, value) -> way1.put(key, null));
         way1.put("old_ref", "A1");
         way1.put("ref", "A2");
