void (@Nullable Map<PluginId, IdeaPluginDescriptorImpl> pluginIdMap) { myDependentToRequiredListMap.clear(); InstalledPluginsState pluginsState = InstalledPluginsState.getInstance(); for (IdeaPluginDescriptor rootDescriptor : view) { final PluginId pluginId = rootDescriptor.getPluginId(); myDependentToRequiredListMap.remove(pluginId); if (isDeleted(rootDescriptor) || isDisabled(pluginId)) { continue; } if (pluginIdMap == null) { pluginIdMap = PluginManagerCore.INSTANCE.buildPluginIdMap(); } boolean loaded = isLoaded(pluginId); if (rootDescriptor instanceof IdeaPluginDescriptorImpl) { PluginManagerCore.INSTANCE.processAllNonOptionalDependencyIds((IdeaPluginDescriptorImpl)rootDescriptor, pluginIdMap, depId -> { if (depId.equals(pluginId)) { return FileVisitResult.CONTINUE; } if ((!isLoaded(depId) && !pluginsState.wasInstalled(depId) && !pluginsState.wasUpdated(depId) && !pluginsState.wasInstalledWithoutRestart(depId)) || isDisabled(depId)) { myDependentToRequiredListMap.putIfAbsent(pluginId, new HashSet<>()); myDependentToRequiredListMap.get(pluginId).add(depId); } return FileVisitResult.CONTINUE; }); } if (!loaded && !myDependentToRequiredListMap.containsKey(pluginId) && PluginManagerCore.isCompatible(rootDescriptor)) { setEnabled(pluginId, PluginEnabledState.ENABLED); // todo } } }