public async Task GetStateAsync_ReturnsProjectState()
        {
            // Arrange
            var projectSnapshotManager = new TestProjectSnapshotManager(ProjectSnapshot1, ProjectSnapshot2);

            using var proxy = new DefaultProjectSnapshotManagerProxy(
                      new TestCollaborationSession(true),
                      Dispatcher,
                      projectSnapshotManager,
                      JoinableTaskFactory);

            // Act
            var state = await JoinableTaskFactory.RunAsync(() => proxy.GetProjectManagerStateAsync(CancellationToken.None));

            // Assert
            Assert.Collection(
                state.ProjectHandles,
                handle =>
            {
                Assert.Equal("vsls:/path/to/project1.csproj", handle.FilePath.ToString());
                Assert.Equal(ProjectSnapshot1.TagHelpers, handle.ProjectWorkspaceState.TagHelpers);
            },
                handle =>
            {
                Assert.Equal("vsls:/path/to/project2.csproj", handle.FilePath.ToString());
                Assert.Equal(ProjectSnapshot2.TagHelpers, handle.ProjectWorkspaceState.TagHelpers);
            });
        }
        public async Task GetStateAsync_CachesState()
        {
            // Arrange
            var projectSnapshotManager = new TestProjectSnapshotManager(ProjectSnapshot1);
            var proxy = new DefaultProjectSnapshotManagerProxy(
                new TestCollaborationSession(true),
                Dispatcher,
                projectSnapshotManager,
                JoinableTaskFactory);

            // Act
            var state1 = await JoinableTaskFactory.RunAsync(() => proxy.GetProjectManagerStateAsync(CancellationToken.None));

            var state2 = await JoinableTaskFactory.RunAsync(() => proxy.GetProjectManagerStateAsync(CancellationToken.None));

            // Assert
            Assert.Same(state1, state2);
        }