public void GivenLambdaWithAnonymousReturnTypeWhenTransformCalledThenShouldReturnExpression(LambdaExpression lambda)
        {
            var actual = adapter.TransformLambda(lambda);

            Assert.NotSame(lambda, actual);
            object source, target;

            if (lambda.Parameters.Any())
            {
                var thing = new TestableThing();
                target = actual.Compile().DynamicInvoke(thing);
                source = lambda.Compile().DynamicInvoke(thing);
            }
            else
            {
                target = actual.Compile().DynamicInvoke(null);
                source = lambda.Compile().DynamicInvoke(null);
            }

            object targetVal;

            if (lambda.AsEnumerable().OfType <NewExpression>().Any())
            {
                Assert.IsType <AnonInitializer>(target);
                targetVal = (target as AnonInitializer).AnonValue.GetValue();
            }
            else
            {
                targetVal = target;
            }

            Assert.True(ExpressionEquivalency.ValuesAreEquivalent(source, targetVal));
        }