static void mergeOptionalConfigs(Map<PluginId, IdeaPluginDescriptorImpl> descriptors) {
   final Map<PluginId, IdeaPluginDescriptorImpl> descriptorsWithModules =
       new HashMap<PluginId, IdeaPluginDescriptorImpl>(descriptors);
   addModulesAsDependents(descriptorsWithModules);
   for (IdeaPluginDescriptorImpl descriptor : descriptors.values()) {
     final Map<PluginId, IdeaPluginDescriptorImpl> optionalDescriptors =
         descriptor.getOptionalDescriptors();
     if (optionalDescriptors != null && !optionalDescriptors.isEmpty()) {
       for (Map.Entry<PluginId, IdeaPluginDescriptorImpl> entry : optionalDescriptors.entrySet()) {
         if (descriptorsWithModules.containsKey(entry.getKey())) {
           descriptor.mergeOptionalConfig(entry.getValue());
         }
       }
     }
   }
 }
 @TestOnly
 public final void notifyAreaReplaced() {
   for (final ExtensionPointImpl point : myExtensionPoints.values()) {
     point.notifyAreaReplaced(this);
   }
 }
 public MutablePicoContainer[] getPluginContainers() {
   return myPluginName2picoContainer
       .values()
       .toArray(new MutablePicoContainer[myPluginName2picoContainer.values().size()]);
 }
 public ExtensionPoint[] getExtensionPoints() {
   return myExtensionPoints.values().toArray(new ExtensionPoint[myExtensionPoints.size()]);
 }