/// <summary>
        ///     This method causes the DefaultValue cache to be cleared ensuring
        ///     that CreateDefaultValue will be called next time this metadata
        ///     is asked to participate in the DefaultValue factory pattern.
        ///
        ///     This is internal so it can be accessed by subclasses of
        ///     DefaultValueFactory.
        /// </summary>
        internal void ClearCachedDefaultValue(DependencyObject owner, DependencyProperty property)
        {
            FrugalMapBase map = _defaultValueFactoryCache.GetValue(owner);

            if (map.Count == 1)
            {
                _defaultValueFactoryCache.ClearValue(owner);
            }
            else
            {
                map.RemoveEntry(property.GlobalIndex);
            }
        }