DeepComparator (@NotNull VcsLogData dataProvider, @NotNull VcsLogUi ui) { DeepComparator comparator = myComparators.get(ui); if (comparator == null) { comparator = new DeepComparator(myProject, GitRepositoryManager.getInstance(myProject), dataProvider, ui, this); myComparators.put(ui, comparator); if (ui instanceof Disposable) { Disposer.register((Disposable)ui, new Disposable() { @Override public void dispose() { DeepComparator removed = myComparators.remove(ui); if (removed != null) Disposer.dispose(removed); // check for null in case we dispose DeepComparatorHolder before ui } }); } } return comparator; }