void storeOffsetsBeforeDying(@NotNull IntervalTreeImpl.IntervalNode<?> node) {
    // store current offsets to give async listeners the ability to get offsets
    int delta = node.computeDeltaUpToRoot();
    long range = TextRangeScalarUtil.shift(node.toScalarRange(), delta, delta);
    int startOffset = Math.max(0, TextRangeScalarUtil.startOffset(range));
    int endOffset = Math.max(startOffset, TextRangeScalarUtil.endOffset(range));
    // piggyback myId to store offsets, to conserve memory
    myId = TextRangeScalarUtil.toScalarRange(startOffset, endOffset); // avoid invalid range
  }
void storeOffsetsBeforeDying(@NotNull IntervalTreeImpl.IntervalNode<?> node)