public static void TestVisitor()
        {
            List <IComponent> components = new List <IComponent>
            {
                new ConcreteComponentA(),
                new ConcreteComponentB(),
                new ConcreteComponentA()
            };

            Console.WriteLine("The client code works with all visitors via the base Visitor interface:");
            var visitor1 = new ConcreteVisitor1();

            Client.ClientCode(components, visitor1);

            Console.WriteLine();

            Console.WriteLine("It allows the same client code to work with different types of visitors:");
            var visitor2 = new ConcreteVisitor2();

            Client.ClientCode(components, visitor2);
        }