private @NotNull List<T> updateMarkersOnChange(@NotNull DocumentEvent e) {
    checkMax(true);

    incModCount();

    List<IntervalNode<T>> affected = new SmartList<>();
    int start = e.getOffset();
    int oldLength = e.getOldLength();
    int newLength = e.getNewLength();
    collectAffectedMarkersAndShiftSubtrees(getRoot(), start, start + oldLength, newLength - oldLength, affected);
    checkMax(false);

    if (!affected.isEmpty()) {
      return updateAffectedNodes(e, 0, affected);
    }
    return Collections.emptyList();
  }
private @NotNull List<T> updateMarkersOnChange(@NotNull DocumentEvent e)