code: public static <V> String replace(final Object source, final Map<String, V> valueMap, final String prefix, final String suffix) {
          return new StrSubstitutor(valueMap, prefix, suffix).replace(source);
      }
docs: Replaces all the occurrences of variables in the given source object with
  their matching values from the map. This method allows to specify a
  custom variable prefix and suffix
  
  @param <V> the type of the values in the map
  @param source  the source text containing the variables to substitute, null returns null
  @param valueMap  the map with the values, may be null
  @param prefix  the prefix of variables, not null
  @param suffix  the suffix of variables, not null
  @return the result of the replace operation
  @throws IllegalArgumentException if the prefix or suffix is null