Inheritance: System.Waf.Foundation.Model, INavigationNode
        public INavigationNode AddNavigationNode(string name, Action showAction, Action closeAction, double group, double order)
        {
            var navigationNode = new NavigationNode(name, showAction, closeAction, group, order);

            // Insert the new navigation node at the right index.
            var sameGroup = navigationNodes.Where(x => DoubleEquals(x.Group, group, 1E-9)).ToArray();
            if (sameGroup.Any())
            {
                var nextNode = sameGroup.FirstOrDefault(x => x.Order > order);
                int nextNodeIndex = (nextNode != null) ? navigationNodes.IndexOf(nextNode) : navigationNodes.IndexOf(sameGroup.Last()) + 1;
                navigationNodes.Insert(nextNodeIndex, navigationNode);
            }
            else
            {
                var nextNode = navigationNodes.FirstOrDefault(x => x.Group > group);
                if (nextNode != null)
                {
                    int nextNodeIndex = navigationNodes.IndexOf(nextNode);
                    navigationNodes.Insert(nextNodeIndex, navigationNode);
                }
                else
                {
                    navigationNodes.Add(navigationNode);
                }
            }

            // Mark the first nodes of a new group. But don't mark the very first node.
            double oldGroup = navigationNodes.First().Order;
            foreach (var node in navigationNodes.Skip(1))
            {
                if (!DoubleEquals(oldGroup, node.Group, 1E-9))
                {
                    node.IsFirstItemOfNewGroup = true;
                    oldGroup = node.Group;
                }
                else
                {
                    node.IsFirstItemOfNewGroup = false;
                }
            }

            return navigationNode;
        }