private static void addDependenciesNode(
      @NotNull ExternalProjectsView externalProjectsView,
      @NotNull MultiMap<Key<?>, DataNode<?>> dataNodes,
      @NotNull List<ExternalSystemNode<?>> result) {
    final Collection<DataNode<?>> moduleDeps = dataNodes.get(ProjectKeys.MODULE_DEPENDENCY);
    final Collection<DataNode<?>> libDeps = dataNodes.get(ProjectKeys.LIBRARY_DEPENDENCY);

    if (!moduleDeps.isEmpty() || !libDeps.isEmpty()) {
      final ExternalSystemNode depNode = new MyDependenciesNode(externalProjectsView);

      for (DataNode<?> dataNode : moduleDeps) {
        if (!(dataNode.getData() instanceof ModuleDependencyData)) continue;
        //noinspection unchecked
        depNode.add(
            new ModuleDependencyDataExternalSystemNode(
                externalProjectsView, (DataNode<ModuleDependencyData>) dataNode));
      }

      for (DataNode<?> dataNode : libDeps) {
        if (!(dataNode.getData() instanceof LibraryDependencyData)) continue;
        //noinspection unchecked
        final ExternalSystemNode<LibraryDependencyData> libraryDependencyDataExternalSystemNode =
            new LibraryDependencyDataExternalSystemNode(
                externalProjectsView, (DataNode<LibraryDependencyData>) dataNode);

        depNode.add(libraryDependencyDataExternalSystemNode);
        libraryDependencyDataExternalSystemNode.setErrorLevel(
            ((LibraryDependencyData) dataNode.getData()).getTarget().isUnresolved()
                ? ExternalProjectsStructure.ErrorLevel.ERROR
                : ExternalProjectsStructure.ErrorLevel.NONE);
      }

      result.add(depNode);
    }
  }
    @Override
    protected void update(PresentationData presentation) {
      super.update(presentation);
      presentation.setIcon(getUiAware().getProjectIcon());

      final ModuleDependencyData data = getData();
      if (data != null) {
        setNameAndTooltip(getName(), null, data.getScope().getDisplayName());
      }
    }
    @Override
    protected void update(PresentationData presentation) {
      super.update(presentation);
      presentation.setIcon(AllIcons.Nodes.PpLib);

      final LibraryDependencyData data = getData();
      if (data != null) {
        setNameAndTooltip(getName(), null, data.getScope().getDisplayName());
      }
    }
 @Override
 protected void update(PresentationData presentation) {
   super.update(presentation);
   presentation.setIcon(AllIcons.Nodes.PpLibFolder);
 }