public DefaultImportDocumentManager(
            [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider,
            VisualStudioWorkspaceAccessor workspaceAccessor)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            if (workspaceAccessor == null)
            {
                throw new ArgumentNullException(nameof(workspaceAccessor));
            }

            _fileChangeService = serviceProvider.GetService(typeof(SVsFileChangeEx)) as IVsFileChangeEx;

            var workspace = workspaceAccessor.Workspace;

            _foregroundDispatcher = workspace.Services.GetRequiredService <ForegroundDispatcher>();
            _errorReporter        = workspace.Services.GetRequiredService <ErrorReporter>();

            var razorLanguageServices = workspace.Services.GetLanguageServices(RazorLanguage.Name);

            _templateEngineFactoryService = razorLanguageServices.GetRequiredService <RazorTemplateEngineFactoryService>();

            _importTrackerCache = new Dictionary <string, ImportTracker>(StringComparer.OrdinalIgnoreCase);
        }
        // This is only used for testing.
        internal DefaultImportDocumentManager(
            IVsFileChangeEx fileChangeService,
            RazorTemplateEngineFactoryService templateEngineFactoryService,
            ForegroundDispatcher foregroundDispatcher,
            ErrorReporter errorReporter)
        {
            _fileChangeService            = fileChangeService;
            _templateEngineFactoryService = templateEngineFactoryService;
            _foregroundDispatcher         = foregroundDispatcher;
            _errorReporter = errorReporter;

            _importTrackerCache = new Dictionary <string, ImportTracker>(StringComparer.OrdinalIgnoreCase);
        }