code: @Pure
  	public static <K, V1, V2> Map<K, V2> mapValues(Map<K, V1> original, Function1<? super V1, ? extends V2> transformation) {
  		return Maps.transformValues(original, new FunctionDelegate<V1, V2>(transformation));
  	}
docs: <p>Returns a map that performs the given {@code transformation} for each value of {@code original} when requested.</p>
  
  <p>The mapping is done lazily. That is, subsequent access of the values in the map will repeatedly apply the
  transformation. Characteristics of the original map, such as iteration order, are left intact. Changes in the
  original map are reflected in the result map. The results supports removal if the original map supports removal.</p>
  
  @param original
  the original map. May not be <code>null</code>.
  @param transformation
  the transformation. May not be <code>null</code>.
  @return a map with equal keys but transformed values. Never <code>null</code>.
  @since 2.4