private static void recordUiProperties(@NotNull MainVcsLogUi ui, @NotNull Set<MetricEvent> metricEvents) {
    MainVcsLogUiProperties properties = ui.getProperties();
    VcsLogUiProperties defaultProperties = createDefaultPropertiesInstance();

    addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(SHOW_DETAILS), DETAILS);
    addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(SHOW_ONLY_AFFECTED_CHANGES), ONLY_AFFECTED_CHANGES);
    addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(SHOW_LONG_EDGES), LONG_EDGES);

    addIfDiffers(metricEvents, properties, defaultProperties, p -> GraphOptionsUtil.getKindName(p.get(GRAPH_OPTIONS)),
                 GRAPH_OPTIONS_TYPE, GRAPH_OPTIONS_TYPE_FIELD);
    if (properties.get(GRAPH_OPTIONS) instanceof PermanentGraph.Options.Base) {
      addIfDiffers(metricEvents, properties, defaultProperties, p -> {
        PermanentGraph.Options options = p.get(GRAPH_OPTIONS);
        if (options instanceof PermanentGraph.Options.Base baseOptions) {
          return baseOptions.getSortType();
        }
        return null;
      }, SORT, SORT_TYPE_FIELD);
    }

    if (ui.getTable().getColorManager().hasMultiplePaths()) {
      addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(SHOW_ROOT_NAMES), ROOTS);
    }

    addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(MainVcsLogUiProperties.TEXT_FILTER_REGEX),
                     TEXT_FILTER_REGEX);
    addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(MainVcsLogUiProperties.TEXT_FILTER_MATCH_CASE),
                     TEXT_FILTER_MATCH_CASE);

    for (VcsLogHighlighterFactory factory : LOG_HIGHLIGHTER_FACTORY_EP.getExtensionList()) {
      if (factory.showMenuItem()) {
        addBoolIfDiffers(metricEvents, properties, defaultProperties, getter(VcsLogHighlighterProperty.get(factory.getId())),
                         HIGHLIGHTER, new ArrayList<>(List.of(LOG_HIGHLIGHTER_ID_FIELD.with(getFactoryIdSafe(factory)))));
      }
    }

    for (VcsLogFilterCollection.FilterKey<?> key : VcsLogFilterCollection.STANDARD_KEYS) {
      if (properties.getFilterValues(key.getName()) != null) {
        metricEvents.add(FILTER.metric(EventFields.Enabled.with(true), FILTER_NAME.with(key.getName())));
      }
    }
  }
private static void recordUiProperties(@NotNull MainVcsLogUi ui, @NotNull Set<MetricEvent> metricEvents)