private async Task CreateDatabaseAsync(IPythonInterpreter interpreter)
        {
            var dbs = new ModuleDatabase(Services, Path.GetDirectoryName(TestData.GetDefaultModulePath()));

            Services.AddService(dbs);

            var importedModules = interpreter.ModuleResolution.GetImportedModules();

            foreach (var m in importedModules.Where(m => m.Analysis is LibraryAnalysis))
            {
                await dbs.StoreModuleAnalysisAsync(m.Analysis, immediate : true);
            }

            importedModules = interpreter.TypeshedResolution.GetImportedModules();
            foreach (var m in importedModules.Where(m => m.Analysis is LibraryAnalysis))
            {
                await dbs.StoreModuleAnalysisAsync(m.Analysis, immediate : true);
            }
        }
        public async Task ReturnType()
        {
            const string code     = @"
from module2 import func2
x = func2()
";
            const string mod2Code = @"
class C2:
    def M1C2(self):
        return 0

def func2() -> C2: ...
";
            await TestData.CreateTestSpecificFileAsync("module2.py", mod2Code);

            var analysis = await GetAnalysisAsync(code);

            var f2        = analysis.Should().HaveVariable("func2").Which;
            var analysis2 = ((IPythonFunctionType)f2.Value).DeclaringModule.Analysis;

            var dbs = new ModuleDatabase(Services, Path.GetDirectoryName(TestData.GetDefaultModulePath()));

            Services.AddService(dbs);
            await dbs.StoreModuleAnalysisAsync(analysis2, immediate : true, CancellationToken.None);

            await Services.GetService <IPythonAnalyzer>().ResetAnalyzer();

            var doc = Services.GetService <IRunningDocumentTable>().GetDocument(analysis.Document.Uri);

            analysis = await doc.GetAnalysisAsync(Timeout.Infinite);

            var func2 = analysis.Should().HaveFunction("func2").Which;
            var c2    = func2.Should().HaveSingleOverload()
                        .Which.Should().HaveReturnType("C2").Which;

            c2.Should().HaveMember <IPythonFunctionType>("M1C2")
            .Which.Should().HaveSingleOverload()
            .Which.Should().HaveReturnType(BuiltinTypeId.Int);
        }