Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 7072)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 7073)
@@ -55,5 +55,5 @@
  * Dataset is threadsafe - accessing Dataset simultaneously from different threads should never
  * lead to data corruption or ConccurentModificationException. However when for example one thread
- * removes primitive and other thread try to add another primitive reffering to the removed primitive,
+ * removes primitive and other thread try to add another primitive referring to the removed primitive,
  * DataIntegrityException will occur.
  *
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7072)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7073)
@@ -48,5 +48,4 @@
 import org.openstreetmap.josm.io.UTFInputStreamReader;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
@@ -192,18 +191,18 @@
             removeMetaRules(source);
             // group rules with common declaration block
-            MultiMap<MapCSSRule.Declaration, MapCSSRule> rules = new MultiMap<>();
+            Map<Declaration, List<Selector>> g = new LinkedHashMap<>();
             for (MapCSSRule rule : source.rules) {
-                rules.put(rule.declaration, rule);
+                if (!g.containsKey(rule.declaration)) {
+                    List<Selector> sels = new ArrayList<>();
+                    sels.add(rule.selector);
+                    g.put(rule.declaration, sels);
+                } else {
+                    g.get(rule.declaration).add(rule.selector);
+                }
             }
             List<TagCheck> result = new ArrayList<>();
-            for (Collection<MapCSSRule> rulesCommonDecl : rules.values()) {
-                List<Selector> selectors = new ArrayList<>();
-                for (MapCSSRule rule : rulesCommonDecl) {
-                    selectors.add(rule.selector);
-                }
-                if (!rulesCommonDecl.isEmpty()) {
-                    result.add(TagCheck.ofMapCSSRule(
-                            new GroupedMapCSSRule(selectors, rulesCommonDecl.iterator().next().declaration)));
-                }
+            for (Map.Entry<Declaration, List<Selector>> map : g.entrySet()) {
+                result.add(TagCheck.ofMapCSSRule(
+                        new GroupedMapCSSRule(map.getValue(), map.getKey())));
             }
             return result;
