@Override
  public void moveCaretRelatively(int columnShift, int lineShift, boolean withSelection, boolean scrollToCaret) {
    if (lineShift == 0) {
      myEnd += columnShift;
      if (!withSelection) {
        myStart = myPos = myEnd;
      }
    }
    else {
      var oldPos = myPos;
      var currentPosition = getLogicalPosition();
      moveToLogicalPosition(new LogicalPosition(currentPosition.line + lineShift, currentPosition.column + columnShift));
      if (withSelection) {
        var newPos = myPos;
        myStart = Math.min(oldPos, newPos);
        myEnd = Math.max(oldPos, newPos);
      }
    }
  }
@Override
  public void moveCaretRelatively(int columnShift, int lineShift, boolean withSelection, boolean scrollToCaret)