Index: /trunk/build.xml
===================================================================
--- /trunk/build.xml	(revision 16627)
+++ /trunk/build.xml	(revision 16628)
@@ -302,5 +302,5 @@
             <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
             <compilerarg value="-XDignore.symbol.file"/>
-            <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:ShortCircuitBoolean:OFF -Xep:StringSplitter:OFF -Xep:JdkObsolete:OFF -Xep:UnnecessaryParentheses:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:MixedMutabilityReturnType:OFF -Xep:JavaTimeDefaultTimeZone:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF -Xep:MutablePublicArray:OFF"/>
+            <compilerarg value="-Xplugin:ErrorProne -XepExcludedPaths:.*/parsergen/.* -Xep:ReferenceEquality:OFF -Xep:FutureReturnValueIgnored:OFF -Xep:ShortCircuitBoolean:OFF -Xep:StringSplitter:OFF -Xep:JdkObsolete:OFF -Xep:UnnecessaryParentheses:OFF -Xep:EqualsGetClass:OFF -Xep:UndefinedEquals:OFF -Xep:JavaTimeDefaultTimeZone:OFF -Xep:BadImport:OFF -Xep:AnnotateFormatMethod:OFF -Xep:MutablePublicArray:OFF"/>
             <compilerarg line="-Xmaxwarns 1000"/>
             <classpath>
Index: /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 16628)
@@ -260,5 +260,5 @@
         if (list.size() == 1) {
             // ways form a single line string
-            return new ArrayList<>(list.iterator().next().getNodes());
+            return Collections.unmodifiableList(new ArrayList<>(list.iterator().next().getNodes()));
         }
         return Collections.emptyList();
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 16628)
@@ -283,5 +283,5 @@
             }
         }
-        return result;
+        return Collections.unmodifiableList(result);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java	(revision 16628)
@@ -211,5 +211,5 @@
             } else if (answer != JOptionPane.NO_OPTION)
                 throw new UserCancelException();
-            return commands;
+            return Collections.unmodifiableCollection(commands);
         }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 16628)
@@ -409,5 +409,5 @@
                 rels.stream().filter(r -> !dataSet.containsRelation(r)).forEachOrdered(col::add);
             }
-            return col;
+            return Collections.unmodifiableCollection(col);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/Changeset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Changeset.java	(revision 16628)
@@ -475,5 +475,5 @@
             return Collections.emptyList();
         }
-        return new ArrayList<>(discussion);
+        return Collections.unmodifiableList(discussion);
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/NodeGraph.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/NodeGraph.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/data/osm/NodeGraph.java	(revision 16628)
@@ -375,5 +375,5 @@
             }
         }
-        return result;
+        return Collections.unmodifiableSet(result);
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 16628)
@@ -242,5 +242,5 @@
             }
             errors.addAll(result);
-            return result;
+            return Collections.unmodifiableList(result);
         }
         return Collections.emptyList();
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/ConnectivityRelations.java	(revision 16628)
@@ -120,5 +120,5 @@
             result.put(laneNumber, connections);
         }
-        return result;
+        return Collections.unmodifiableMap(result);
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/util/ValUtil.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/util/ValUtil.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/data/validation/util/ValUtil.java	(revision 16628)
@@ -86,5 +86,5 @@
             cells.add(cellWays.computeIfAbsent(cell, k -> new ArrayList<>()));
         }
-        return cells;
+        return Collections.unmodifiableList(cells);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 16628)
@@ -1108,5 +1108,5 @@
             drawImageInside(g, img, anchorImage, anchorScreen, clip);
         }
-        return missedTiles;
+        return Collections.unmodifiableList(missedTiles);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(revision 16628)
@@ -4,7 +4,5 @@
 import java.awt.Color;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -12,5 +10,4 @@
 import java.util.Map.Entry;
 import java.util.Objects;
-import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -41,4 +38,5 @@
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 import org.openstreetmap.josm.tools.RotationAngle;
+import org.openstreetmap.josm.tools.StreamUtils;
 import org.openstreetmap.josm.tools.Territories;
 import org.openstreetmap.josm.tools.Utils;
@@ -476,13 +474,10 @@
         if (env.parent == null) {
             if (env.osm != null) {
-                final Collection<String> tags = new TreeSet<>(AlphanumComparator.getInstance());
                 // we don't have a matched parent, so just search all referrers
-                for (IPrimitive parent : env.osm.getReferrers()) {
-                    String value = parent.get(key);
-                    if (value != null) {
-                        tags.add(value);
-                    }
-                }
-                return new ArrayList<>(tags);
+                return env.osm.getReferrers().stream().map(parent -> parent.get(key))
+                        .filter(Objects::nonNull)
+                        .distinct()
+                        .sorted(AlphanumComparator.getInstance())
+                        .collect(StreamUtils.toUnmodifiableList());
             }
             return Collections.emptyList();
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 16628)
@@ -819,5 +819,5 @@
                 }
             }
-            return dividers;
+            return Collections.unmodifiableList(dividers);
         } else
             return Collections.emptyList();
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerChangesetReader.java	(revision 16628)
@@ -182,5 +182,5 @@
                 monitor.worked(1);
             }
-            return ret;
+            return Collections.unmodifiableList(ret);
         } catch (OsmTransferException e) {
             throw e;
Index: /trunk/src/org/openstreetmap/josm/tools/WinRegistry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/WinRegistry.java	(revision 16627)
+++ /trunk/src/org/openstreetmap/josm/tools/WinRegistry.java	(revision 16628)
@@ -202,5 +202,5 @@
         }
         regCloseKey.invoke(root, getNumber(handles, 0));
-        return results;
+        return Collections.unmodifiableMap(results);
     }
 
@@ -226,5 +226,5 @@
         }
         regCloseKey.invoke(root, getNumber(handles, 0));
-        return results;
+        return Collections.unmodifiableList(results);
     }
 
