Returns a new Map by filtering its values using the given predicate.
Map<K, V> whereValue(Predicate<V> p) { Map<K, V> map = {}; forEach((k, v) { if (p(v)) map[k] = v; }); return map; }