void (@NotNull Collection<? extends IdeaPluginDescriptor> descriptors, @NotNull PluginEnableDisableAction action) { Map<PluginId, PluginEnabledState> tempEnabled = new HashMap<>(myEnabled); setNewEnabled(descriptors, tempEnabled, action, (descriptor, pair) -> { }); Map<PluginId, IdeaPluginDescriptorImpl> pluginIdMap = PluginManagerCore.INSTANCE.buildPluginIdMap(); List<IdeaPluginDescriptorImpl> impls = descriptors.stream() .map(descriptor -> descriptor instanceof IdeaPluginDescriptorImpl ? (IdeaPluginDescriptorImpl)descriptor : findByPluginId(descriptor.getPluginId(), pluginIdMap)) .collect(Collectors.toCollection(ArrayList::new)); List<IdeaPluginDescriptorImpl> descriptorsToUpdate = action.isEnable() ? getDependenciesToEnable(impls, tempEnabled, pluginIdMap) : getDependentsToDisable(impls, tempEnabled, pluginIdMap); Set<String> pluginNamesToUpdate = descriptorsToUpdate.stream() .filter(descriptor -> !isHiddenImplementationDetail(descriptor)) .map(IdeaPluginDescriptorImpl::getName) .collect(Collectors.toCollection(TreeSet::new)); if (HIDE_IMPLEMENTATION_DETAILS && !createUpdateDependenciesDialog(pluginNamesToUpdate, action)) { return; } impls.addAll(descriptorsToUpdate); setNewEnabled(impls, myEnabled, action, this::handleBeforeChangeEnableState); updatePluginDependencies(pluginIdMap); }