/// <summary>
        /// Looks up and returns a value based on the provided key.  If the value is found the out parameter
        /// "value" is set to the found value and true is returned.  Otherwise the value of "value" is
        /// undefined and false is returned.
        /// </summary>
        /// <param name="name">The named value to find.</param>
        /// <param name="value">The output value set to the found value.</param>
        /// <returns>True if the value is found, false otherwise.</returns>
        public bool TryGetValue(string name, out string value)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            if (m_cacheIsInvalid)
            {
                rebuildCache();
            }

            value = null;

            if (m_Settings.ContainsKey(name))
            {
                value = m_Settings[name];
                return(true);
            }
            else
            {
                if (m_parent != null)
                {
                    return(m_parent.TryGetValue(name, out value));
                }
            }

            return(false);
        }