private void retreat(int offset) {
      for (int j = i - 2; j >= 0; j--) {
        RangeHighlighterEx highlighter = highlighters[j];
        if (skipHighlighter(highlighter)) continue;
        if (getAlignedStartOffset(highlighter) > offset) {
          myNextHighlighter = highlighter;
          i = j + 1;
        }
        else {
          break;
        }
      }
      myMarkupModel.processRangeHighlightersOverlappingWith(
        offset,
        offset,
        h -> {
          if (acceptHighlighter(h) && !skipHighlighter(h)) {
            myCurrentHighlighters.add(h);
          }
          return true;
        }
      );
    }
private void retreat(int offset)