Set<MetricEvent> (@NotNull Project project) { final Set<MetricEvent> metricEvents = new HashSet<>(); RunDashboardManagerImpl runDashboardManager = (RunDashboardManagerImpl)RunDashboardManager.getInstance(project); final Set<String> dashboardTypes = new HashSet<>(runDashboardManager.getTypes()); Set<String> removedDefaultType = new HashSet<>(runDashboardManager.getEnableByDefaultTypes()); dashboardTypes.removeAll(removedDefaultType); // do not report enable by default types removedDefaultType.removeAll(runDashboardManager.getTypes()); metricEvents.add(RUN_DASHBOARD.metric(!dashboardTypes.isEmpty())); if (!dashboardTypes.isEmpty()) { List<ConfigurationType> configurationTypes = ConfigurationType.CONFIGURATION_TYPE_EP.getExtensionList(); for (String dashboardType : dashboardTypes) { ConfigurationType configurationType = ContainerUtil.find(configurationTypes, type -> type.getId().equals(dashboardType)); if (configurationType == null) continue; List<EventPair<?>> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null); metricEvents.add(ADDED_RUN_CONFIGURATION.metric(data)); } } if (!removedDefaultType.isEmpty()) { List<ConfigurationType> configurationTypes = ConfigurationType.CONFIGURATION_TYPE_EP.getExtensionList(); for (String removedType : removedDefaultType) { ConfigurationType configurationType = ContainerUtil.find(configurationTypes, type -> type.getId().equals(removedType)); if (configurationType == null) continue; List<EventPair<?>> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null); metricEvents.add(REMOVED_RUN_CONFIGURATION.metric(data)); } } return metricEvents; }