code: public static <K, V> Map<K, V> stringToMap(String serialized, Function<String, K> keyMaker,
                                                 Function<String, V> valueMaker) {
          Map<String, String> map = Splitter.on(',').trimResults().withKeyValueSeparator('=').split(serialized);
          return map.entrySet()
                    .stream()
                    .collect(toMap(e -> keyMaker.apply(e.getKey()), e -> valueMaker.apply(e.getValue())));
      }
docs: Performs the reverse of {@link #mapToString(Map)}. It parses a map written in a string form
  back into a Java map.
  
  Note that in order to parse properly, it is important that none the keys or values that
  were serialized contain '=' or ',' characters as this prevents parsing. For this reason it
  should be noted that this simple format does not support nesting.
  
  @param <K> The type of the keys of the map.
  @param <V> The type of the values of the map.
  @param serialized The serialized form of the map.
  @param keyMaker The constructor for the key objects
  @param valueMaker The constructor for the value objects
  @return A map the corresponds to the serialized string.