@Contract(pure = true)
  public @NotNull TextRange union(@NotNull TextRange textRange) {
    if (equals(textRange)) {
      return this;
    }
    return new TextRange(Math.min(myStartOffset, textRange.getStartOffset()), Math.max(myEndOffset, textRange.getEndOffset()));
  }
@Contract(pure = true)
  public @NotNull TextRange union(@NotNull TextRange textRange)