@Contract(pure = true)
  public @NotNull String substring(@NotNull String str) {
    return str.substring(myStartOffset, myEndOffset);
  }
@Contract(pure = true)
  public @NotNull String substring(@NotNull String str)