code: public static <K1, K2, V> ImmutableListMultimap<K2, V> copyWithTransformedKeys(
        final ListMultimap<K1,V> listMultimap,
        final Function<? super K1, ? extends K2> injection) {
      final ImmutableListMultimap.Builder<K2,V> ret = ImmutableListMultimap.builder();
      for (final Map.Entry<K1, V> entry : listMultimap.entries()) {
        // nulls banned by contract
        //noinspection ConstantConditions
        ret.put(injection.apply(entry.getKey()), entry.getValue());
      }
      return ret.build();
    }
docs: Creates a copy of the supplied multimap with its keys transformed by the supplied function.
  
  The {@code injection} must never return null and the input multimap must contain no nulls.