// return a fancy litorderedmap
static Map orderMapByDescendingValue(final Map map) {
L l = new ArrayList(map.keySet());
sort(l, new Comparator() {
public int compare(A a, A b) {
ret cmp(map.get(b), map.get(a));
}
});
Map map2 = litorderedmap();
for (A a : l)
map2.put(a, map.get(a));
ret map2;
}