/// <summary>
        /// Process the graph from a given node
        /// </summary>
        /// <param name="node"></param>
        public void ProcessGraph(DaggerNode node)
        {
            node.DoProcessing();

            foreach (DaggerNode n in node._descendents)
            {
                n.DoProcessing();
            }
        }
        /// <summary>
        /// Process the graph from a given node
        /// </summary>
        /// <param name="node"></param>
        public void ProcessGraph(DaggerNode node)
        {
            node.DoProcessing();

            // if the node has a UINode attached, call it's DoUIProcessing method
            if (node.UINode != null)
            {
                node.UINode.DoUIProcessing();
            }

            foreach (DaggerNode n in node._descendents)
            {
                n.DoProcessing();

                // if the node has a UINode attached, call it's DoUIProcessing method
                if (n.UINode != null)
                {
                    n.UINode.DoUIProcessing();
                }
            }
        }