public void ValidOptions()
        {
            var testOptions = new TestOptions();
            var userOptionsOntestOptions       = new SolutionUserOptions(testOptions);
            List <SolutionUserOptions> options = new List <SolutionUserOptions>
            {
                userOptionsOntestOptions,
                new SolutionUserOptions(new TestOptionsValid2()),
            };

            List <string> expectedResults = new List <string>
            {
                "google_string_1",
                "google_string_2",
                "google_string_3",
                "google_string_4",
            };
            List <string> optionKeys = new List <string>();

            foreach (var key in options.SelectMany(setting => setting.Keys))
            {
                optionKeys.Add(key);
            }

            CollectionAssert.AreEqual(expectedResults, optionKeys);

            string testKey = "google_string_1";

            Assert.AreEqual("string option 1", userOptionsOntestOptions.Read(testKey));
            string newValue = "string opiton new value";

            userOptionsOntestOptions.Set(testKey, newValue);
            Assert.AreEqual(newValue, userOptionsOntestOptions.Read(testKey));
        }
        protected override void OnSaveOptions(string key, Stream stream)
        {
            SolutionUserOptions userSettings = s_userSettings.FirstOrDefault(x => x.Contains(key));
            if (userSettings == null)
            {
                return;
            }

            var value = userSettings.Read(key);
            WriteOptionStream(stream, value ?? NoneValue);
        }