static void Main(string[] args)
        {
            Class2        cl2   = new Class2();
            List <string> list2 = cl2.MethodToReturnSomething();

            Console.WriteLine(list2[0]);
            Console.WriteLine();

            //Class1 cl1 = new Class2();
            //List<string> list1 = cl1.MethodToReturnSomething();

            //Console.WriteLine(list1[0]);
            //Console.WriteLine();

            Class1        cl3   = new Class1();
            List <string> list3 = cl3.MethodToReturnSomething();

            Console.WriteLine(list3[0]);
            Console.WriteLine();

            Class3 <int> cl4 = new Class3 <int>();

            Console.WriteLine("Class3 int: " + cl4.MethodToReturnSomethingGeneric(100).ToString());
            Console.WriteLine();

            Class3 <string> cl5 = new Class3 <string>();

            Console.WriteLine("Class3 string: " + cl5.MethodToReturnSomethingGeneric("C# Rocks!").ToString());
            Console.WriteLine();

            Class4 <int> cl6 = new Class4 <int>();

            Console.WriteLine("Class4 int: " + cl6.MethodToReturnSomethingGeneric(100).ToString());
            Console.WriteLine();

            Class4 <string> cl7 = new Class4 <string>();

            Console.WriteLine("Class4 string: " + cl7.MethodToReturnSomethingGeneric("C# Rocks...hard!").ToString());
            Console.WriteLine();

            Console.ReadLine();
        }