code: public static TypeDescriptor map(Class<?> mapType, TypeDescriptor keyTypeDescriptor, TypeDescriptor valueTypeDescriptor) {
  		if (!Map.class.isAssignableFrom(mapType)) {
  			throw new IllegalArgumentException("mapType must be a java.util.Map");
  		}
  		return new TypeDescriptor(mapType, keyTypeDescriptor, valueTypeDescriptor);
  	}
docs: Create a new type descriptor from a {@link java.util.Map} type.
  <p>Useful for converting to typed Maps.
  <p>For example, a Map&lt;String, String&gt; could be converted to a Map&lt;Id, EmailAddress&gt; by converting to a targetType built with this method:
  The method call to construct such a TypeDescriptor would look something like: map(Map.class, TypeDescriptor.valueOf(Id.class), TypeDescriptor.valueOf(EmailAddress.class));
  @param mapType the map type, which must implement {@link Map}
  @param keyTypeDescriptor a descriptor for the map's key type, used to convert map keys
  @param valueTypeDescriptor the map's value type, used to convert map values
  @return the map type descriptor