private async Task <Document> AwaitLocalVariable(Document document, VariableDeclaratorSyntax variableDeclaration, CancellationToken cancellationToken)
        {
            var oldValue       = variableDeclaration.Initializer.Value;
            var awaitExp       = SyntaxFactory.AwaitExpression(oldValue);
            var newInitializer = variableDeclaration.Initializer
                                 .WithValue(awaitExp);
            var methodDecl    = variableDeclaration.GetParentOfType <MethodDeclarationSyntax>();
            var newMethodDecl = methodDecl.ReplaceNode(variableDeclaration.Initializer, newInitializer);

            var asyncToken = newMethodDecl.ChildTokens().SingleOrDefault(t => t.IsKind(SyntaxKind.AsyncKeyword));

            if (asyncToken.IsKind(SyntaxKind.None))
            {
                newMethodDecl = newMethodDecl.AddModifiers(SyntaxFactory.Token(SyntaxKind.AsyncKeyword));
            }

            var root = await document.GetSyntaxRootAsync(cancellationToken);

            var newRoot = root.ReplaceNode(methodDecl, newMethodDecl);

            return(document.WithSyntaxRoot(newRoot));
        }