ConvertFrom
        (
            ITypeDescriptorContext context,
            CultureInfo culture,
            Object value
        )
        {
            Debug.Assert(value != null);
            Debug.Assert(value is String);
            AssertValid();

            PersistableStringDictionary oDictionary =
                PersistableStringDictionary.FromString((String)value);

            WordMetricUserSettings oWordMetricUserSettings =
                new WordMetricUserSettings();

            Boolean bValue;
            String  sValue;

            if (oDictionary.TryGetValue(
                    WordMetricUserSettings.TextColumnIsOnEdgeWorksheetKey,
                    out bValue))
            {
                oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet = bValue;
            }

            if (oDictionary.TryGetValue(
                    WordMetricUserSettings.TextColumnNameKey, out sValue))
            {
                oWordMetricUserSettings.TextColumnName = sValue;
            }

            if (oDictionary.TryGetValue(
                    WordMetricUserSettings.CountByGroupKey, out bValue))
            {
                oWordMetricUserSettings.CountByGroup = bValue;
            }

            if (oDictionary.TryGetValue(
                    WordMetricUserSettings.SkipSingleTermsKey, out bValue))
            {
                oWordMetricUserSettings.SkipSingleTerms = bValue;
            }

            oWordMetricUserSettings.WordsToSkip =
                oDictionary.TryGetValue(WordMetricUserSettings.WordsToSkipKey,
                                        out sValue) ? sValue : String.Empty;

            return(oWordMetricUserSettings);
        }
        TestTryGetValue6()
        {
            // Value not an Double.

            m_oPersistableStringDictionary.Add("Key1", "abc");

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Double dValue;

            Assert.IsFalse(
                oPersistableStringDictionary2.TryGetValue("Key1", out dValue));
        }
        TestTryGetValue11()
        {
            // Value not a Boolean.

            m_oPersistableStringDictionary.Add("Key1", "abc");

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Boolean bValue;

            Assert.IsFalse(
                oPersistableStringDictionary2.TryGetValue("Key1", out bValue));
        }
        TestTryGetValue5()
        {
            // Value not found.

            m_oPersistableStringDictionary.Add("Key1", 123456789.1);

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Double dValue;

            Assert.IsFalse(
                oPersistableStringDictionary2.TryGetValue("KeyX", out dValue));
        }
        TestTryGetValue10()
        {
            // Value found.

            m_oPersistableStringDictionary.Add("Key1", false);

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Boolean bValue;

            Assert.IsTrue(
                oPersistableStringDictionary2.TryGetValue("Key1", out bValue));

            Assert.IsFalse(bValue);
        }
        TestTryGetValue9()
        {
            // Write a lower-case string, look for value.

            m_oPersistableStringDictionary.Add("Key1", "false");

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Boolean bValue;

            Assert.IsTrue(
                oPersistableStringDictionary2.TryGetValue("Key1", out bValue));

            Assert.IsFalse(bValue);
        }
        TestTryGetValue4()
        {
            // Value found.

            m_oPersistableStringDictionary.Add("Key1", -123456789.54321);

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Double dValue;

            Assert.IsTrue(
                oPersistableStringDictionary2.TryGetValue("Key1", out dValue));

            Assert.AreEqual(-123456789.54321, dValue);
        }
        TestTryGetValue()
        {
            // Value found.

            m_oPersistableStringDictionary.Add("Key1", 123456789);

            String sSavedString = m_oPersistableStringDictionary.ToString();

            PersistableStringDictionary oPersistableStringDictionary2 =
                PersistableStringDictionary.FromString(sSavedString);

            Int32 iValue;

            Assert.IsTrue(
                oPersistableStringDictionary2.TryGetValue("Key1", out iValue));

            Assert.AreEqual(123456789, iValue);
        }