@ApiStatus.Internal
  public void retreat(int offset) {
    assert !myReverseIteration && // we need only this case at the moment, this can be relaxed if needed
           myCaretData == CaretData.getNullCaret() &&
           offset >= myInitialStartOffset &&
           offset <= myStartOffset &&
           !DocumentUtil.isInsideSurrogatePair(myDocument, offset);
    if (offset == myStartOffset) return;
    if (myHighlighterIterator != null) {
      while (myHighlighterIterator.getStart() > offset) {
        myHighlighterIterator.retreat();
      }
    }
    myCurrentHighlighters.clear();
    myDoc.retreat(offset);
    myView.retreat(offset);
    myEndOffset = offset;
    advance();
  }
@ApiStatus.Internal
  public void retreat(int offset)