code: public static Replacement create(int startPosition, int endPosition, String replaceWith) {
      checkArgument(
          startPosition >= 0 && startPosition <= endPosition,
          "invalid replacement: [%s, %s) (%s)",
          startPosition,
          endPosition,
          replaceWith);
      return new AutoValue_Replacement(Range.closedOpen(startPosition, endPosition), replaceWith);
    }
docs: Creates a {@link Replacement}. Start and end positions are represented as code unit indices in
  a Unicode 16-bit string.
  
  @param startPosition the beginning of the replacement
  @param endPosition the end of the replacement, exclusive
  @param replaceWith the replacement text