private static void Test(System.Reflection.Emit.TypeBuilder xExtensions, ref foo f)
        {
            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2014/201401/20140118
            // X:\jsc.svn\examples\rewrite\Test\TestStackRewriter\TestStackRewriter\Program.cs

            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2014/201401/20140115/xlsx
            f.m = xExtensions.DefineMethod("AsDataTable",
                default(MethodAttributes),
                null,
                // parameter types
                // there is a fault here.
                new[] { typeof(IEnumerable<>).MakeGenericType(f.x) }
            );
        }
        static void Main(string[] args)
        {
            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2014/201401/20140115/xlsx

            var a = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("foo"), System.Reflection.Emit.AssemblyBuilderAccess.Save);
            var e = new { Module = a.DefineDynamicModule("foo") };


            var xExtensions = e.Module.DefineType("Extensions");
            var xRow = e.Module.DefineType("Row");
            Console.WriteLine("define xExtensionsAsDataTable");


            var f = new foo { x = xRow };
            Test(xExtensions, ref f);
        }