docs: public static <K, V, E> Map<K, V> transformMapValue(Map<K, E> input, Function<E, V> f) {
        // This screams for a map function! Gimme functional programming pleasee...
        if (input.isEmpty()) return Collections.emptyMap();
        if (input.size() == 1) {
           Map.Entry<K, E> single = input.entrySet().iterator().next();
           return singletonMap(single.getKey(), f.transform(single.getValue()));
        } else {
           Map<K, V> copy = new HashMap<>(input.size());
           for (Map.Entry<K, E> entry : input.entrySet())
              copy.put(entry.getKey(), f.transform(entry.getValue()));
           return unmodifiableMap(copy);
        }
     }