public static async Task <Document> RefactorAsync( Document document, LocalDeclarationStatementSyntax localDeclaration, CancellationToken cancellationToken) { TypeSyntax type = localDeclaration.Declaration.Type; LocalDeclarationStatementSyntax newNode = localDeclaration; if (type.IsVar) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); ITypeSymbol typeSymbol = semanticModel.GetTypeSymbol(type, cancellationToken); TypeSyntax newType = typeSymbol.ToMinimalTypeSyntax(semanticModel, localDeclaration.SpanStart); newNode = newNode.ReplaceNode(type, newType.WithTriviaFrom(type)); } Debug.Assert(!newNode.Modifiers.Any(), newNode.Modifiers.ToString()); if (newNode.Modifiers.Any()) { newNode = newNode.InsertModifier(SyntaxKind.ConstKeyword); } else { newNode = newNode .WithoutLeadingTrivia() .WithModifiers(TokenList(Token(SyntaxKind.ConstKeyword).WithLeadingTrivia(newNode.GetLeadingTrivia()))); } return(await document.ReplaceNodeAsync(localDeclaration, newNode, cancellationToken).ConfigureAwait(false)); }