public static Node FindSiblingDependencies(Node node) { node.SetChildren(node.Childs.Select(FindSiblingDependencies).ToList()); if (node.Parent == null) return node; var allSubDependencies = node.AllSubDependencies().ToList(); var dependenciesWhereAncestorsAreSiblings = allSubDependencies .Select(dependency => AncestorIsSibling(node.Parent, dependency)).ToList(); foreach ( var sibling in dependenciesWhereAncestorsAreSiblings .Where(sibling => sibling != null && sibling != node)) { node.SiblingDependencies.Add(sibling); } return node; }
public void FilterChild(Node child) { Dependencies.UnionWith(child.AllSubDependencies()); ChildsList.Remove(child); }