/// <summary>
        /// Find the longest word reachable from the specified node.
        /// </summary>
        /// <param name="node"> The node from which to find the longest word. </param>
        public virtual LetterNode LongestWord(LetterNode node)
        {
            LetterNode longestChild = null;

            foreach (LetterNode child in node.Children().Values)
            {
                if ((longestChild == null) || (child.MaxLength() > longestChild.MaxLength()))
                {
                    longestChild = child;
                }
            }

            return(longestChild);
        }
        /// <summary>
        /// A test harness for the LetterNode class.
        /// </summary>
        /// <param name="args"> The command line arguments passed in. </param>
        public static void TestLetterNode(string[] args)
        {
            if (args.Length > 0)
            {
                LetterNode node = new LetterNode(args[0]);

                for (int i = 1; i < args.Length; i++)
                {
                    node.AddWord(args[i]);
                }

                Console.Write("Total words = " + node.LeafNodeCount());
                Console.Write("Maximum word length = " + node.MaxLength());
            }
            else
            {
                Console.Write("Usage:  GhostGame " + typeof(LetterNode).FullName + " <word-list>");
            }
        }