private static async Task <Document> ExtractMethodAsync(Document document, MethodDeclarationSyntax extractFrom, CancellationToken cancellationToken)
        {
            var selectionResult  = SelectionResult.ExtractFrom(extractFrom);
            var semanticDocument = await SemanticDocument.CreateAsync(document, cancellationToken);

            var analyzer = new MethodExtractorAnalyzer(semanticDocument, selectionResult, cancellationToken);

            var codeGenerator = new CodeGenerator(semanticDocument, analyzer.Analyze(), selectionResult, $"{extractFrom.Identifier.Text}_ExtractedMethod");

            semanticDocument = await codeGenerator.GenerateAsync(cancellationToken);

            return(semanticDocument.Document);
        }