public static void AnonymousTypeInsideQueryExpression()
        {
            // ManagedTests.DynamicCSharp.Conformance.dynamic.context.indexer.genclass.genclass017.genclass017

            List <string> list = new List <string>()
            {
                "0", "4", null, "6", "4", "4", null
            };

            dynamic dy  = new MemberClassWithAnotherTypeConstraint <string, string>();
            dynamic dy2 = new MemberClassWithNewConstraint <Test>();
            Test    t   = new Test()
            {
                _field = 1
            };

            var result = list.Where(p => p == dy[dy2]).Select(p => new
            {
                A = dy2[t],
                B = dy[dy2]
            }).ToList();

            Assert.Equal(2, result.Count);
            Assert.Equal(3, MemberClassWithAnotherTypeConstraint <string, string> .Status);
            Assert.Equal(1, MemberClassWithNewConstraint <Test> .t_status);

            foreach (var m in result)
            {
                Assert.Equal(10, ((Test)m.A)._field);
                Assert.Null(m.B);
            }
        }
        public static int MainMethod()
        {
            dynamic dy1     = new MemberClassWithNewConstraint <C>();
            dynamic dy2     = new MemberClassWithAnotherTypeConstraint <int, int>();
            C       result  = new C();
            int     result2 = -1;

            switch ((int)dy2.Method_ReturnsU(dy1)) // 0
            {
            case 0:
                result = (C)dy1.Method_ReturnsDynamic(result);     // called
                break;

            default:
                result2 = (int)dy2.Method_ReturnsDynamic(0, 0, dy2);     // not called
                break;
            }

            return((result.GetType() == typeof(C) && result2 == -1) ? 0 : 1);
        }
        public static int MainMethod()
        {
            List <string> list = new List <string>()
            {
                "0", "4", null, "6", "4", "4", null
            }

            ;
            // string s = "test";
            dynamic dy  = new MemberClassWithAnotherTypeConstraint <string, string>();
            dynamic dy2 = new MemberClassWithNewConstraint <Test>();
            Test    t   = new Test()
            {
                _field = 1
            }

            ;
            var result = list.Where(p => p == dy[dy2]).Select(p => new
            {
                A = dy2[t],
                B = dy[dy2]
            }

                                                              ).ToList();

            if (result.Count == 2 && MemberClassWithAnotherTypeConstraint <string, string> .Status == 3 && MemberClassWithNewConstraint <Test> .Status == 1)
            {
                foreach (var m in result)
                {
                    if (((Test)m.A)._field != 10 || m.B != null)
                    {
                        return(1);
                    }
                }

                return(0);
            }

            return(1);
        }