code: @CheckReturnValue
    public String replaceFrom(CharSequence sequence, CharSequence replacement) {
      int replacementLen = replacement.length();
      if (replacementLen == 0) {
        return removeFrom(sequence);
      }
      if (replacementLen == 1) {
        return replaceFrom(sequence, replacement.charAt(0));
      }
  
      String string = sequence.toString();
      int pos = indexIn(string);
      if (pos == -1) {
        return string;
      }
  
      int len = string.length();
      StringBuilder buf = new StringBuilder((len * 3 / 2) + 16);
  
      int oldpos = 0;
      do {
        buf.append(string, oldpos, pos);
        buf.append(replacement);
        oldpos = pos + 1;
        pos = indexIn(string, oldpos);
      } while (pos != -1);
  
      buf.append(string, oldpos, len);
      return buf.toString();
    }
docs: Returns a string copy of the input character sequence, with each character that matches this
  matcher replaced by a given replacement sequence. For example: <pre>   {@code
  
  CharMatcher.is('a').replaceFrom("yaha", "oo")}</pre>
  
  ... returns {@code "yoohoo"}.
  
  <p><b>Note:</b> If the replacement is a fixed string with only one character, you are better
  off calling {@link #replaceFrom(CharSequence, char)} directly.
  
  @param sequence the character sequence to replace matching characters in
  @param replacement the characters to append to the result string in place of each matching
  character in {@code sequence}
  @return the new string