public static async Task <Document> RefactorAsync(
            Document document,
            UsingStatementSyntax usingStatement,
            ExpressionSyntax expression,
            CancellationToken cancellationToken)
        {
            SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            string name = NameGenerator.Default.EnsureUniqueLocalName(DefaultNames.Variable, semanticModel, expression.SpanStart);

            VariableDeclarationSyntax declaration = VariableDeclaration(
                VarType(),
                Identifier(name).WithRenameAnnotation(),
                EqualsValueClause(expression.WithoutTrivia()));

            declaration = declaration
                          .WithTriviaFrom(expression)
                          .WithFormatterAnnotation();

            UsingStatementSyntax newNode = usingStatement
                                           .WithExpression(null)
                                           .WithDeclaration(declaration);

            return(await document.ReplaceNodeAsync(usingStatement, newNode, cancellationToken).ConfigureAwait(false));
        }