Index: trunk/src/org/openstreetmap/josm/tools/MultiMap.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/MultiMap.java	(revision 3636)
+++ trunk/src/org/openstreetmap/josm/tools/MultiMap.java	(revision 3637)
@@ -4,17 +4,21 @@
 import java.util.HashMap;
 import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Maps keys to ordered sets of values.
  */
-public class MultiMap<A, B> extends HashMap<A, LinkedHashSet<B>> {
+public class MultiMap<A, B>  {
+
+    private final Map<A, LinkedHashSet<B>> map = new HashMap<A, LinkedHashSet<B>>();
     /**
      * Map a key to a value. Can be called multiple times with the same key, but different value.
      */
     public void put(A key, B value) {
-        LinkedHashSet<B> vals = get(key);
+        LinkedHashSet<B> vals = map.get(key);
         if (vals == null) {
             vals = new LinkedHashSet<B>();
-            put(key, vals);
+            map.put(key, vals);
         }
         vals.add(value);
@@ -25,7 +29,7 @@
      */
     public void putVoid(A key) {
-        if (containsKey(key))
+        if (map.containsKey(key))
             return;
-        put(key, new LinkedHashSet<B>());
+        map.put(key, new LinkedHashSet<B>());
     }
 
@@ -35,7 +39,15 @@
      */
     public LinkedHashSet<B> getValues(A key) {
-        if (!containsKey(key))
+        if (!map.containsKey(key))
             return new LinkedHashSet<B>();
-        return get(key);
+        return map.get(key);
+    }
+
+    public Set<A> keySet() {
+        return map.keySet();
+    }
+
+    public Set<B> get(A key) {
+        return map.get(key);
     }
 }
