static void Main(string[] args)
        {
            GenericTreeNext A = new GenericTreeNext("Green");

            A.AddChild(new GenericTreeNext("Red"));
            GenericTreeNext inter = new GenericTreeNext("Blue");

            inter.AddChild(new GenericTreeNext("Orange"));
            inter.AddChild(new GenericTreeNext("Yellow"));
            A.AddChild(inter);
            GenericTreeNext inter1 = new GenericTreeNext("Violet");

            inter1.AddChild(new GenericTreeNext("Cyan"));
            A.AddChild(inter1);
            A.Traverse(NodeWorker);
            Console.ReadKey();
        }
 static void NodeWorker(int depth, GenericTreeNext node)
 {                                // a little one-line string-concatenation (n-times)
     Console.WriteLine("{0}{1}: {2}", String.Join("   ", new string[depth + 1]), depth, node.Name);
 }