void (@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)); } }