public static String format(String format, ParamResolver resolver) {
    if (format == null) {
      return null;
    }

    StringBuffer s = new StringBuffer();
    Matcher m = paramPattern.matcher(format);

    while (m.find()) {
      String g = m.group();

      if (m.start(1) != -1) {
        // Match on group 1, which is our parameter pattern; append a single '?'
        m.appendReplacement(s, resolver.resolveParam(g.substring(1, g.length() - 1)));
      } else {
        // Match on quoted strings, which we just copy as-is
        m.appendReplacement(s, g);
      }
    }

    m.appendTail(s);

    return s.toString();
  }