docs: public static boolean replaceStep(Matcher m, Substitution substitution, TextBuffer dest) {
          boolean firstPass = true;
          int c = 0, count = 1;
          while (c < count && m.find()) {
              if (m.end() == 0 && !firstPass) continue;  //allow to replace at "^"
              if (m.start() > 0) m.getGroup(MatchResult.PREFIX, dest);
              substitution.appendSubstitution(m, dest);
              c++;
              m.setTarget(m, MatchResult.SUFFIX);
              firstPass = false;
          }
          return c > 0;
      }