void (@NotNull DocumentEvent e) { super.onBeforeDocumentChange(e); if (myDiffChanges.isEmpty()) return; List<Document> documents = ContainerUtil.map(getEditors(), Editor::getDocument); ThreeSide side = ThreeSide.fromValue(documents, e.getDocument()); if (side == null) { LOG.warn("Unknown document changed"); return; } LineRange lineRange = DiffUtil.getAffectedLineRange(e); int shift = DiffUtil.countLinesShift(e); Set<SimpleThreesideDiffChange> invalid = new HashSet<>(); for (SimpleThreesideDiffChange change : myDiffChanges) { if (change.processChange(lineRange.start, lineRange.end, shift, side)) { invalid.add(change); } } if (!invalid.isEmpty()) { myDiffChanges.removeAll(invalid); myInvalidDiffChanges.addAll(invalid); for (SimpleThreesideDiffChange change : invalid) { change.markInvalid(); } } }