Index: trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 16554)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java	(revision 16555)
@@ -187,7 +187,8 @@
                                 Way w = (Way) sp;
                                 Map<String, String> keys = w.getKeys();
-                                for (String type: typeMap.keySet()) {
-                                    if (keys.containsKey(type)) {
-                                        typeMap.put(type, Boolean.TRUE);
+                                for (Iterator<Entry<String, Boolean>> itt = typeMap.entrySet().iterator(); itt.hasNext();) {
+                                    Entry<String, Boolean> e = itt.next();
+                                    if (keys.containsKey(e.getKey())) {
+                                        e.setValue(Boolean.TRUE);
                                         typed = true;
                                     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 16554)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 16555)
@@ -19,6 +19,8 @@
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Optional;
@@ -409,8 +411,10 @@
 
         private <T> void doCleanupResidualBounds(Map<Integer, T> map, Consumer<T> removalEffect) {
-            for (Integer i : map.keySet()) {
-                int viewIndex = defaultTable.convertRowIndexToView(i);
+            for (Iterator<Entry<Integer, T>> it = map.entrySet().iterator(); it.hasNext();) {
+                Entry<Integer, T> e = it.next();
+                int viewIndex = defaultTable.convertRowIndexToView(e.getKey());
                 if (!defaultTable.getSelectionModel().isSelectedIndex(viewIndex)) {
-                    removalEffect.accept(map.remove(i));
+                    it.remove();
+                    removalEffect.accept(e.getValue());
                 }
             }
