static void Main(string[] args)
        {
            //List<Dictionary<string, object>> data = new List<Dictionary<string, object>>()
            //{

            //    new Dictionary<string, object>()
            //    {
            //        {"C", "data"},
            //        {"A.Data","data1"},
            //        {"A.Data1",2},
            //        {"B.Data","data3"},
            //        {"B.Data1",4},
            //        {"D.Data","data5"},
            //        {"D.Data1",6}
            //    },
            //    new Dictionary<string, object>()
            //    {
            //        {"C", "data"},
            //        {"A.Data","data1"},
            //        {"A.Data1",2},
            //        {"B.Data","data3"},
            //        {"B.Data1",4},
            //        {"D.Data","data7"},
            //        {"D.Data1",8}
            //    },
            //    new Dictionary<string, object>()
            //    {
            //        {"C", "data"},
            //        {"A.Data","data1"},
            //        {"A.Data1",2},
            //        {"B.Data","data9"},
            //        {"B.Data1",10},
            //        {"D.Data","data5"},
            //        {"D.Data1",6}
            //    },
            //    new Dictionary<string, object>()
            //    {
            //        {"C", "data"},
            //        {"A.Data","data1"},
            //        {"A.Data1",2},
            //        {"B.Data","data9"},
            //        {"B.Data1",10},
            //        {"D.Data","data7"},
            //        {"D.Data1",8}
            //    }
            //};

            List <Dictionary <string, object> > data = new List <Dictionary <string, object> >()
            {
                new Dictionary <string, object>()
                {
                    { "C", "data" },
                    { "A.Data", "data1" },
                    { "A.Data1", 2 },
                    { "B.Data", "data3" },
                    { "B.Data1", 4 },
                    { "D.Data", "data5" },
                    { "D.Data1", 6 }
                },
                new Dictionary <string, object>()
                {
                    { "C", "data" },
                    //{"A.Data","data1"},
                    { "A.Data1", 2 },
                    { "B.Data", "data3" },
                    { "B.Data1", 4 },
                    { "D.Data", "data7" },
                    { "D.Data1", 8 }
                },
                new Dictionary <string, object>()
                {
                    { "C", "data" },
                    //{"A.Data","data1"},
                    { "A.Data1", 2 },
                    { "B.Data", "data9" },
                    { "B.Data1", 10 },
                    { "D.Data", "data5" },
                    { "D.Data1", null }
                },
                new Dictionary <string, object>()
                {
                    { "C", "data" },
                    //{"A.Data","data1"},
                    { "A.Data1", 2 },
                    { "B.Data", "data9" },
                    { "B.Data1", 10 },
                    { "D.Data", "data7" },
                    { "D.Data1", 8 }
                }
            };
            //var meh = Automapper.GenerateMapper<TestType1>().CreateDelegate()(data);
            var blah   = FunctionGenerator.GenerateKeyGenerator(typeof(TestType5)).Instructions();
            var result = Nested.Automapper.Map <TestType1>(data);
        }