@Override
  protected Map<String, Void> performIndexing(IdeaPlugin plugin) {
    List<String> ids = new SmartList<>();
    final String pluginId = plugin.getPluginId();
    if (pluginId != null) {
      ids.add(PLUGIN_ID_KEY_PREFIX + pluginId);
    }

    //noinspection unchecked
    final List<Dependency> dependencies = (List<Dependency>)getChildrenWithoutIncludes(plugin, "depends");
    for (Dependency dependency : dependencies) {
      ContainerUtil.addIfNotNull(ids, dependency.getStringValue());

      final String configFile = dependency.getConfigFile().getStringValue();
      if (configFile != null) {
        final String filename = PathUtil.getFileName(configFile);
        ids.add(getDependsIndexingKey(filename));
      }
    }

    // new model: dependencies
    final DependencyDescriptor dependencyDescriptor = plugin.getDependencies();
    for (DependencyDescriptor.PluginDescriptor pluginDescriptor : dependencyDescriptor.getPlugin()) {
      ContainerUtil.addIfNotNull(ids, pluginDescriptor.getId().getStringValue());
    }
    for (ContentDescriptor.ModuleDescriptor moduleDescriptor : dependencyDescriptor.getModuleEntry()) {
      ContainerUtil.addIfNotNull(ids, moduleDescriptor.getName().getStringValue());
    }

    // new model: content
    for (ContentDescriptor.ModuleDescriptor descriptor : plugin.getContent().getModuleEntry()) {
      final String value = descriptor.getName().getStringValue();
      if (StringUtil.isNotEmpty(value)) {
        final String escapeSubDescriptorValue = value.replace('/', '.');
        ids.add(getContentIndexingKey(escapeSubDescriptorValue));
      }
    }

    return ContainerUtil.newHashMap(ids, Collections.nCopies(ids.size(), null));
  }
@Override
  protected Map<String, Void> performIndexing(IdeaPlugin plugin)