public async Task TestOptionIsolation()
        {
            var code = @"class Test { void Method() { } }";

            using (var workspace = await TestWorkspace.CreateCSharpAsync(code))
            {
                var solution = workspace.CurrentSolution;
                var service = await GetSolutionServiceAsync(solution);

                var solutionChecksum = await solution.State.GetChecksumAsync(CancellationToken.None);

                var options = new TestOptionSet().WithChangedOption(RemoteHostOptions.RemoteHostTest, true);
                var first = await service.GetSolutionAsync(solutionChecksum, options, CancellationToken.None);
                var second = await service.GetSolutionAsync(solutionChecksum, options.WithChangedOption(RemoteHostOptions.RemoteHostTest, false), CancellationToken.None);

                Assert.Equal(await first.State.GetChecksumAsync(CancellationToken.None), await second.State.GetChecksumAsync(CancellationToken.None));

                // option change shouldn't affect other workspace
                Assert.True(first.Workspace.Options.GetOption(RemoteHostOptions.RemoteHostTest));
                Assert.False(second.Workspace.Options.GetOption(RemoteHostOptions.RemoteHostTest));
            }
        }