docs: public static String tokenReplaceSysProps(CharSequence text) {
      if(text==null) return null;
      Matcher m = SYS_PROP_PATTERN.matcher(text);
      StringBuffer ret = new StringBuffer();
      while(m.find()) {
        String replacement = decodeToken(m.group(1), m.group(2)==null ? "<null>" : m.group(2));
        if(replacement==null) {
          throw new IllegalArgumentException("Failed to fill in SystemProperties for expression with no default [" + text + "]");
        }
        if(IS_WINDOWS) {
          replacement = replacement.replace(File.separatorChar , '/');
        }
        m.appendReplacement(ret, replacement);
      }
      m.appendTail(ret);
      return ret.toString();
    }