void Start()
        {
            if (monkey != null)
            {
                monkey(0);
            }
            TestClass i1 = new TestClass2();

            i1.overrideme();
            i1.overrideme3();
            i1.normal2();
            TestStruct i2 = new TestStruct();

            i2.overrideme();
            i2.overrideme2();
            doit(i1, i2, i1);
            doit(i2, i2, i1);
            callints(i2, i2, i1);
            int res = 0;

            for (int i = 0; i < intArray.Length; i++)
            {
                res += intArray[i];
            }
            for (int i = 0; i < objArray.Length; i++)
            {
                res += (int)objArray[i];
            }
            ITestGeneric <int>    x1 = new TestGeneric <int>(new int[] { 1, 2, 3 });
            ITestGeneric <object> x2 = new TestGeneric <object>(new object[] { new object() });

            callgeneric(x1, 0);
            callgeneric(x2, "foo");
            ITestGeneric <string> x3 = new TestGeneric2 <int, string>(new string[] { "as", "de" });

            new WeirdLayout2().f = 3;
            x3.genericFunc("bar");
        }