public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node) { if (this.semanticModel == null) { this.semanticModel = this.document.GetSemanticModelAsync(this.cancellationToken).Result; } var symbolInfo = this.semanticModel.GetSymbolInfo(node, this.cancellationToken); if (symbolInfo.Symbol == null) { return node; } if ((symbolInfo.Symbol.Kind == SymbolKind.Field || symbolInfo.Symbol.Kind == SymbolKind.Property || symbolInfo.Symbol.Kind == SymbolKind.Method || symbolInfo.Symbol.Kind == SymbolKind.Event) && symbolInfo.Symbol.CanBeReferencedByName && !symbolInfo.Symbol.IsStatic && !HasThisAccess(node) && CanAnnotateProperty(node)) { this.addedAnnotations = true; var trivia = node.GetLeadingTrivia(); var memberAccess = SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.ThisExpression(), node.WithoutLeadingTrivia()); return memberAccess.WithLeadingTrivia(trivia); } return base.VisitIdentifierName(node); }