static void printMultiSet(MultiSet ms) { printMultiSet(ms, null); } // renderer = func(O) -> S static void printMultiSet(MultiSet ms, O renderer) { for (O o : ms.highestFirst()) print(ms.get(o) + ": " + (renderer != null ? callF(renderer, o) : str(o))); print(); }