@Contract(value = "_, _, _ -> new", pure = true)
  public static @NotNull StringOperation replace(int startOffset, int endOffset, @NotNull CharSequence replacement) {
    return replace(TextRange.create(startOffset, endOffset), replacement);
  }
@Contract(value = "_, _, _ -> new", pure = true)
  public static @NotNull StringOperation replace(int startOffset, int endOffset, @NotNull CharSequence replacement)