diff --git a/platform/util/src/com/intellij/util/containers/MostlySingularMultiMap.java b/platform/util/src/com/intellij/util/containers/MostlySingularMultiMap.java index 92c5cb0b28a7..579aa51694da 100644 --- a/platform/util/src/com/intellij/util/containers/MostlySingularMultiMap.java +++ b/platform/util/src/com/intellij/util/containers/MostlySingularMultiMap.java @@ -59,6 +59,30 @@ public class MostlySingularMultiMap implements Serializable { } } + public boolean remove(@NotNull K key, @NotNull V value) { + Object current = myMap.get(key); + if (current == null) { + return false; + } + if (current instanceof Object[]) { + Object[] curArr = (Object[])current; + Object[] newArr = ArrayUtil.remove(curArr, value, ArrayUtil.OBJECT_ARRAY_FACTORY); + myMap.put(key, newArr); + return newArr.length == curArr.length-1; + } + + if (value.equals(current)) { + myMap.remove(key); + return true; + } + + return false; + } + + public boolean removeAllValues(@NotNull K key) { + return myMap.remove(key) != null; + } + @NotNull public Set keySet() { return myMap.keySet(); @@ -192,7 +216,7 @@ public class MostlySingularMultiMap implements Serializable { @NotNull @Override public Iterable get(@NotNull Object name) { - return EmptyIterable.getInstance(); + return ContainerUtil.emptyList(); } } }