code: public String replace(final StrBuilder source) {
          if (source == null) {
              return null;
          }
          final StrBuilder buf = new StrBuilder(source.length()).append(source);
          substitute(buf, 0, buf.length());
          return buf.toString();
      }
docs: Replaces all the occurrences of variables with their matching values
  from the resolver using the given source builder as a template.
  The builder is not altered by this method.
  
  @param source  the builder to use as a template, not changed, null returns null
  @return the result of the replace operation