private RazorCodeDocument ParseChange(ITextSnapshot snapshot, CancellationToken token)
            {
                EnsureOnThread();

                var projectItem  = new TextSnapshotProjectItem(snapshot, _projectDirectory, _relativeFilePath, _filePath, _fileKind);
                var codeDocument = _projectEngine.ProcessDesignTime(projectItem);

                return(codeDocument);
            }
        private DocumentSnapshot CreateRazorDocumentSnapshot(RazorProjectEngine projectEngine, TestRazorProjectItem item, string rootNamespaceName, IReadOnlyList <TagHelperDescriptor> tagHelpers)
        {
            var codeDocument = projectEngine.ProcessDesignTime(item);

            var namespaceNode = (NamespaceDeclarationIntermediateNode)codeDocument
                                .GetDocumentIntermediateNode()
                                .FindDescendantNodes <IntermediateNode>()
                                .FirstOrDefault(n => n is NamespaceDeclarationIntermediateNode);

            namespaceNode.Content = rootNamespaceName;

            var sourceText            = SourceText.From(new string(item.Content));
            var projectWorkspaceState = new ProjectWorkspaceState(tagHelpers, LanguageVersion.Default);
            var projectSnapshot       = TestProjectSnapshot.Create("C:/project.csproj", projectWorkspaceState);
            var documentSnapshot      = Mock.Of <DocumentSnapshot>(d =>
                                                                   d.GetGeneratedOutputAsync() == Task.FromResult(codeDocument) &&
                                                                   d.FilePath == item.FilePath &&
                                                                   d.FileKind == FileKinds.Component &&
                                                                   d.GetTextAsync() == Task.FromResult(sourceText) &&
                                                                   d.Project == projectSnapshot, MockBehavior.Strict);

            return(documentSnapshot);
        }