public static bool Update(this XContainer proj,
                                  string projectDir, HashSet <CmpNode> newNodes)
        {
            var oldNodes = new HashSet <CmpNode>(
                proj.FindByDirectory(projectDir).Select(x => x.ToCmpNode()));

            var toAdd    = newNodes.Except(oldNodes).ToList();
            var toRemove = oldNodes.Except(newNodes).ToList();

            if (toAdd.Count == 0 && toRemove.Count == 0)
            {
                return(false);
            }
            foreach (var cmpNode in toRemove)
            {
                proj.Find(cmpNode).Remove();
            }
            foreach (var cmpNode in toAdd)
            {
                proj.Insert(projectDir, cmpNode);
            }
            return(true);
        }