void (@NotNull String featureId) { ProductivityFeaturesRegistry registry = ProductivityFeaturesRegistry.getInstance(); FeatureDescriptor descriptor = registry == null ? null : registry.getFeatureDescriptor(featureId); if (descriptor == null) { // TODO: LOG.error("Feature '" + featureId +"' must be registered prior triggerFeatureUsed() is called"); return; } descriptor.triggerUsed(); Class<? extends ProductivityFeaturesProvider> provider = descriptor.getProvider(); String id = provider == null || getPluginInfo(provider).isDevelopedByJetBrains() ? descriptor.getId() : "third.party"; ProductivityUsageCollector.FEATURE_USED.log(id, StringUtil.notNullize(descriptor.getGroupId(), "unknown"), provider == null ? null : getPluginInfo(provider)); ApplicationManager.getApplication().getMessageBus().syncPublisher(FeaturesRegistryListener.TOPIC).featureUsed(descriptor); }