private void processChangesAndTransferData(@NotNull List<? extends TextMergeChange> changes, @NotNull ThreeSide side,
                                             @NotNull Function<TextMergeChange, LineRange> processor) {
    ArrayList<LineRange> newRanges = new ArrayList<>();
    List<TextMergeChange> filteredChanges = new ArrayList<>();
    for (TextMergeChange change : changes) {
      if (change.isImportChange()) {
        continue;
      }
      LineRange newRange = processor.apply(change);
      if (newRange != null) {
        newRanges.add(newRange);
        filteredChanges.add(change);
      }
    }
    transferReferenceData(filteredChanges, side, newRanges);
  }
private void processChangesAndTransferData(@NotNull List<? extends TextMergeChange> changes, @NotNull ThreeSide side,
                                             @NotNull Function<TextMergeChange, LineRange> processor)