private @NotNull <U extends VcsLogUiEx> U createLogUi(@NotNull VcsLogUiFactory<U> factory,
                                                        @NotNull VcsLogTabLocation location,
                                                        boolean isClosedOnDispose) {
    ThreadingAssertions.assertEventDispatchThread();
    if (isDisposed()) {
      LOG.error("Trying to create new VcsLogUi on a disposed VcsLogManager instance");
      throw new ProcessCanceledException();
    }

    U ui = factory.createLogUi(myProject, myLogData);
    Disposer.register(ui, getTabsWatcher().addTabToWatch(ui, location, isClosedOnDispose));

    return ui;
  }
private @NotNull <U extends VcsLogUiEx> U createLogUi(@NotNull VcsLogUiFactory<U> factory,
                                                        @NotNull VcsLogTabLocation location,
                                                        boolean isClosedOnDispose)