protected void persistentHighlighterUpdate(@NotNull DocumentEvent e, boolean wholeLineRange) {
    int line = 0;
    DocumentEventImpl event = (DocumentEventImpl)e;
    boolean viaDiff = isValid() && PersistentRangeMarkerUtil.shouldTranslateViaDiff(event, toScalarRange());
    if (viaDiff) {
      try {
        line = event.getLineNumberBeforeUpdate(getStartOffset());
        line = translatedViaDiff(event, line);
      }
      catch (FilesTooBigForDiffException exception) {
        viaDiff = false;
      }
    }
    if (!viaDiff) {
      doChangeUpdate(e);
      if (isValid()) {
        int startOffset = getStartOffset();
        line = getDocument().getLineNumber(startOffset);
        int endLine = getDocument().getLineNumber(getEndOffset());
        if (endLine != line) {
          setRange(TextRangeScalarUtil.toScalarRange(startOffset, getDocument().getLineEndOffset(line)));
        }
      }
    }
    if (isValid() && wholeLineRange) {
      int newStart = DocumentUtil.getFirstNonSpaceCharOffset(getDocument(), line);
      int newEnd = getDocument().getLineEndOffset(line);
      setRange(TextRangeScalarUtil.toScalarRange(newStart, newEnd));
    }
  }
protected void persistentHighlighterUpdate(@NotNull DocumentEvent e, boolean wholeLineRange)