code: public static <K, V> MutableMap<K, V> tokensToMap(
              String string,
              String separator,
              String keyValueSeparator,
              Function<String, K> keyFunction,
              Function<String, V> valueFunction)
      {
          MutableMap<K, V> map = UnifiedMap.newMap();
          for (StringTokenizer tokenizer = new StringTokenizer(string, separator); tokenizer.hasMoreTokens(); )
          {
              String token = tokenizer.nextToken();
              String key = token.substring(0, token.indexOf(keyValueSeparator));
              String value = token.substring(token.indexOf(keyValueSeparator) + 1, token.length());
              map.put(keyFunction.valueOf(key), valueFunction.valueOf(value));
          }
          return map;
      }
docs: Converts a string of tokens to a {@link MutableMap} using the specified 'key' and 'value'
  Functions. e.g. "1:2,2:1,3:3" with both functions as Functions.getStringToInteger(), will be
  translated a map {[1,2],[2,1],[3,3]}