public ORMModelTree Extract(MethodDeclarationSyntax methodDeclarationSyntaxNode)
        {
            var methodDeclaration = new MethodDeclaration(methodDeclarationSyntaxNode.Identifier.Text, methodDeclarationSyntaxNode.GetCompilationInfo());

            this._ORMModelTree = new ORMModelTree(new ORMModelNode(methodDeclaration));

            var extractor = new LINQToSQLDatabaseAccessingMethodCallExtractor(null, null, _databaseQueries.ToList(), null, null, null);

            extractor.Visit(methodDeclarationSyntaxNode);

            foreach (var dbAccessingMethodCall in extractor.DatabaseAccessingMethodCalls)
            {
                var ORMModelNode = new ORMModelNode(dbAccessingMethodCall);
                _ORMModelTree.RootNode.ChildNodes.Add(ORMModelNode);
            }

            return(_ORMModelTree);
        }
        private async Task ExtractDatabaseAccessingMethodCallsAsync(Solution solution)
        {
            foreach (var project in solution.Projects)
            {
                foreach (var documentId in project.DocumentIds)
                {
                    var document = solution.GetDocument(documentId);

                    SyntaxNode root = await Task.Run(() => document.GetSyntaxRootAsync());

                    SemanticModel model = await Task.Run(() => document.GetSemanticModelAsync());

                    var databaseAccessingMethodCalls = new LINQToSQLDatabaseAccessingMethodCallExtractor(model, DatabaseEntityDeclarations, DatabaseQueries, null, null, null);
                    databaseAccessingMethodCalls.Visit(root);

                    foreach (var item in databaseAccessingMethodCalls.DatabaseAccessingMethodCallsAndSyntaxNodes)
                    {
                        DatabaseAccessingMethodCalls.Add(item.Key, item.Value);
                    }
                }
            }
        }