@Override
  public @NotNull Set<MetricEvent> getMetrics(@NotNull Project project) {
    if (!TrustedProjects.isTrusted(project)) return Collections.emptySet();

    VcsProjectLog projectLog = project.getServiceIfCreated(VcsProjectLog.class);
    if (projectLog == null) return Collections.emptySet();
    VcsProjectLogManager logManager = projectLog.getProjectLogManager();
    if (logManager == null) return Collections.emptySet();

    MainVcsLogUi mainUi = projectLog.getMainLogUi();
    Set<String> additionalTabIds = logManager.getTabsManager().getTabs();
    List<? extends MainVcsLogUi> additionalToolWindowUis = getAdditionalLogUis(logManager.getLogUis(VcsLogTabLocation.TOOL_WINDOW), additionalTabIds);
    List<? extends MainVcsLogUi> additionalEditorUis = getAdditionalLogUis(logManager.getLogUis(VcsLogTabLocation.EDITOR), additionalTabIds);
    if (mainUi == null && additionalToolWindowUis.isEmpty() && additionalEditorUis.isEmpty()) return Collections.emptySet();

    Set<MetricEvent> metricEvents = ContainerUtil.newHashSet(UI_INITIALIZED.metric());

    recordApplicationProperties(ApplicationManager.getApplication().getService(VcsLogApplicationSettings.class), metricEvents);
    if (mainUi != null) {
      metricEvents.add(MAIN_UI_INITIALIZED.metric());
      recordUiProperties(mainUi, metricEvents);
    }
    for (MainVcsLogUi ui : ContainerUtil.union(additionalToolWindowUis, additionalEditorUis)) {
      recordUiProperties(ui, metricEvents);
    }

    if (!additionalToolWindowUis.isEmpty()) {
      metricEvents.add(ADDITIONAL_TOOL_WINDOW_TABS.metric(EventFields.Count.with(additionalToolWindowUis.size())));
    }
    if (!additionalEditorUis.isEmpty()) {
      metricEvents.add(ADDITIONAL_EDITOR_TABS.metric(EventFields.Count.with(additionalEditorUis.size())));
    }

    return metricEvents;
  }
@Override
  public @NotNull Set<MetricEvent> getMetrics(@NotNull Project project)