static MultiSet multiSetSetIntersection(MultiSet a, Set b) { MultiSet ms = similarEmptyMultiSet(a); Set bSet = asSet(b); for (A x : keys(a)) if (bSet.contains(x)) ms.add(x, a.get(x)); ret ms; }