public override SyntaxNode VisitParenthesizedExpression(ParenthesizedExpressionSyntax node)
        {
            var declaringProperty = node.FirstAncestorOrSelf <PropertyDeclarationSyntax>();
            var parentInvocation  = node.FirstAncestorOrSelf <InvocationExpressionSyntax>();

            if (declaringProperty != null &&
                parentInvocation == null &&
                declaringProperty.Identifier.ToString() == "SelectorExpression" &&
                !string.IsNullOrWhiteSpace(this._metadata.BaseClassDtoName))
            {
                var mapperField          = this.GenerateMapperFieldName(this._metadata.BaseClassDtoName);
                var methodMemberAccess   = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, node, SyntaxFactory.IdentifierName("MergeWith"));
                var invocationExpression = SyntaxFactory.InvocationExpression(methodMemberAccess)
                                           .WithArgumentList(SyntaxFactory.ArgumentList(
                                                                 SyntaxFactory.SeparatedList <ArgumentSyntax>(
                                                                     new[] {
                    SyntaxFactory.Argument($"this.{mapperField}.SelectorExpression".ToMemberAccess())
                })));

                return(base.Visit(invocationExpression));
            }

            return(base.VisitParenthesizedExpression(node));
        }