public override SyntaxNode VisitAnonymousObjectCreationExpression(AnonymousObjectCreationExpressionSyntax node)
        {
            var generated = node.Ancestors().OfType<ClassDeclarationSyntax>().Any(a => a.Identifier.ValueText.StartsWith("__FTI"));

            if (generated) return base.VisitAnonymousObjectCreationExpression(node);

            var expType = Model.GetTypeInfo(node).Type;

            if (AnonTypeUsage.AreEquivalent(expType, Type, Comp))
            {
                var propAssignment =
                    node.Initializers.OfType<AnonymousObjectMemberDeclaratorSyntax>()
                    .Select(
                    w =>
                    {
                        // Handle the new { Blah = Foo + Bar } case
                        if (w.NameEquals != null)
                        {
                            return
                                Syntax.BinaryExpression(
                                    SyntaxKind.AssignExpression,
                                    w.NameEquals.Identifier,
                                    w.Expression
                                ).WithLeadingTrivia(w.GetLeadingTrivia()).WithTrailingTrivia(w.GetTrailingTrivia());
                        }

                        // Handle the new { Fizz } case
                        return
                            Syntax.BinaryExpression(
                                SyntaxKind.AssignExpression,
                                w.Expression,
                                w.Expression
                            ).WithLeadingTrivia(w.GetLeadingTrivia()).WithTrailingTrivia(w.GetTrailingTrivia());
                    })
                    .Cast<ExpressionSyntax>().ToList();

                var separators = new List<SyntaxToken>();
                for (var i = 0; i < node.Initializers.SeparatorCount; i++) separators.Add(Syntax.Token(node.Initializers.GetSeparator(i).Kind));

                var equiv =
                    Syntax.ObjectCreationExpression(
                        NewType.WithLeadingTrivia(Syntax.ParseLeadingTrivia(" ")),
                        Syntax.ArgumentList(),
                        Syntax.InitializerExpression(
                            SyntaxKind.ObjectInitializerExpression,
                            Syntax.SeparatedList(
                                propAssignment,
                                separators
                            )
                        )
                    );

                return equiv.WithLeadingTrivia(node.GetLeadingTrivia()).WithTrailingTrivia(node.GetTrailingTrivia());
            }

            return base.VisitAnonymousObjectCreationExpression(node);
        }