public void TraverseTest()
        {
            int cnt = 0;

            foreach (var node in complexRoot.TraverseBreadthFirst())
            {
                cnt += ((SomeCustomClass)node.Info).Title.Length <= 2 ? 1 : 0;
            }

            Assert.AreEqual(13, cnt);
        }
        /// <summary>
        /// Determine size (max width). This matches the max (width + x position) of all nodes in tree
        /// </summary>
        /// <param name="rootNode">root node of the tree</param>
        /// <param name="treeType">ICustomTreeType instance</param>
        /// <param name="drawer">ICustomTreeDrawer instance</param>
        /// <param name="nodeSize">node size from settings</param>
        /// <returns>max size/width</returns>
        public static double DetermineSize(CustomTreeNode rootNode, ICustomTreeType treeType, ICustomTreeDrawer drawer, double nodeSize)
        {
            double maxSize = 0;

            foreach (var node in rootNode.TraverseBreadthFirst())
            {
                double x, y;
                treeType.GetXY(node, out x, out y);
                double size = x + drawer.GetSizeOf(node, nodeSize, false);
                if (size > maxSize)
                {
                    maxSize = size;
                }
            }

            return(maxSize - nodeSize / 2.0f);
        }