private @NotNull TreeElement cutPartOfLeaf(@NotNull TreeElement currentLeafOrLazyParseable,
                                             int currentLeafOffset,
                                             @NotNull TextRange rangeToProcess,
                                             @NotNull CharTable charTable) {
    TextRange intersection =
      rangeToProcess.intersection(TextRange.from(currentLeafOffset, currentLeafOrLazyParseable.getTextLength()));
    assert intersection != null;
    TextRange rangeWithinLeaf = intersection.shiftLeft(currentLeafOffset);
    currentLeafOrLazyParseable = removeRange(currentLeafOrLazyParseable, rangeWithinLeaf, charTable);
    addRangeToLazyParseableCollector(currentLeafOrLazyParseable, rangeWithinLeaf);
    return currentLeafOrLazyParseable;
  }
private @NotNull TreeElement cutPartOfLeaf(@NotNull TreeElement currentLeafOrLazyParseable,
                                             int currentLeafOffset,
                                             @NotNull TextRange rangeToProcess,
                                             @NotNull CharTable charTable)