private async Task<Document> AddConfigureAwait(Document document, AwaitExpressionSyntax awaitSyntax, bool value, CancellationToken cancellationToken)
{
var oldExpression = awaitSyntax.Expression;
var newExpression =
SyntaxFactory.InvocationExpression(
SyntaxFactory.MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression, oldExpression.WithoutTrailingTrivia(), SyntaxFactory.Token(SyntaxKind.DotToken),
SyntaxFactory.IdentifierName("ConfigureAwait")),
SyntaxFactory.ArgumentList(
SyntaxFactory.SingletonSeparatedList<ArgumentSyntax>(
SyntaxFactory.SimpleArgument(
value
? SyntaxFactory.LiteralExpression(
SyntaxKind.TrueLiteralExpression, SyntaxFactory.Token(SyntaxKind.TrueKeyword))
: SyntaxFactory.LiteralExpression(
SyntaxKind.FalseLiteralExpression, SyntaxFactory.Token(SyntaxKind.FalseKeyword))))));
return await document.ReplaceAsync(oldExpression, newExpression, cancellationToken).ConfigureAwait(false);
}
}