public override Expression VisitMemberAccessExpression(MemberAccessExpressionSyntax node) { if (node.Expression is ThisExpressionSyntax) { // ThisExpressions can simply be truncated as shadowing is prevented with the semantic checks. return(node.Name.Accept(this)); } if (!node.IsSafeFieldAccess(_semanticModel)) { throw new UnsupportedSyntaxException(node); } // TODO maybe something more suitable. A variable expression is not possible as a later check may not resolve the associated symbol. return(new GenericLiteralExpression()); }