public void execute()
        {
            ClassB b = new ClassB();
            ClassA a = new ClassA();
            b = a;

        }
        public void execute()
        {
            ClassA<ClassC> a = new ClassA<ClassC>();
            ClassB<ClassC> b = new ClassB<ClassC>();

            a = b;
        }
        public void execute()   
        {
            ClassA a = new ClassA();
            ClassB b = new ClassB();

            ClassC<ClassA> ca = new ClassC<ClassA>();
            ca.result(test);
        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassB<ClassD> ad = new ClassB<ClassD>();

            a2 = a1;

    
        }
        public void execute()   
        {
            ClassA<string> a1 = new ClassB<ClassC>();
            ClassA<object> a2 = new ClassA<object>();

            a2 = a1;

    
        }
        public void execute()   
        {
            ClassA a = new ClassA();
            ClassB b = new ClassB();


            ClassC<ClassA> ca = new ClassC<ClassA>();
           
        }
        public void execute()   
        {
            ClassB<ClassC> ac = new ClassB<ClassC>();
            ClassB<ClassD> ad = new ClassB<ClassD>();

            ac = ad;

    
        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassA<ClassD> ad = new ClassB<ClassD>();

            // ad = ac;
            ad = ac; // this works because its (in) keyword which means only in params are accepted which means the super class can come in base class, 
            ac = ad;

    
        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassA<ClassD> ad = new ClassB<ClassD>();

            // ad = ac;
            ad = ac;
            //ac = ad;

    
        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassA<ClassD> ad = new ClassB<ClassD>();

            // ad = ac;
            ad = ac; // this works because its (in) keyword which means only in params are accepted which means the super class can come in base class, 
                     //ac = ad;


            MyAttrib my = Attribute.GetCustomAttribute(typeof(ClassB));
        }
        public void execute()   
        {
            ClassA a = new ClassA();
            ClassB b = new ClassB();


            ClassC<ClassA> ba = new ClassC<ClassA>();
            a =  ba.result(a);



        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassA<ClassD> ad = new ClassB<ClassD>();

            // ad = ac;
            ad = ac; // this works because its (in) keyword which means only in params are accepted which means the super class can come in base class, 
                     //ac = ad;

            MyAttrib my = (MyAttrib)typeof(ClassB).GetCustomAttributes(typeof(MyAttrib), true) as MyAttrib;

            
            Debug.Log(my.name);
        }
        public void execute()   
        {
            ClassA<ClassC> ac = new ClassB<ClassC>();
            ClassA<ClassD> ad = new ClassB<ClassD>();

            // ad = ac;
            ad = ac; // this works because its (in) keyword which means only in params are accepted which means the super class can come in base class, 
                     //ac = ad;

            Debug.Log(typeof(ClassB).GetCustomAttributes(true).Count());

            System.Reflection.MemberInfo info = typeof(MyClass);
            object[] attributes = info.GetCustomAttributes(true);

            MyAttrib my = typeof(ClassB).GetCustomAttributes(typeof(MyAttrib), true).FirstOrDefault() as MyAttrib;

            
            Debug.Log(my.name);
        }
        public void execute()
        {
            ClassB b = new ClassB();
            ClassB a = new ClassB();

        }