public static bool IsSettingOverwritten(PropertyValue localProperty, PropertyValue parentProperty)
 {
     if ((parentProperty == null) || (localProperty == null))
     {
         return false;
     }
     if (localProperty.PropertyType != parentProperty.PropertyType)
     {
         throw new ArgumentException(Strings.ComparingDifferentPropertyTypes);
     }
     return localProperty.OverridesProperty(parentProperty);
 }
        /// <summary>
        /// Determines whether the local property overrides the parent property.
        /// </summary>
        /// <param name="localProperty">The local property.</param>
        /// <param name="parentProperty">The parent property.</param>
        /// <returns>Returns true if the local property overrides the parent property.</returns>
        public static bool IsSettingOverwritten(PropertyValue localProperty, PropertyValue parentProperty)
        {
            Param.Ignore(localProperty, parentProperty);

            // If either the parent property or the local property is not set, then the setting is not overwritten.
            if (parentProperty == null || localProperty == null)
            {
                return false;
            }

            // Ensure that the two properties are the same kind of property.
            if (localProperty.PropertyType != parentProperty.PropertyType)
            {
                throw new ArgumentException(Strings.ComparingDifferentPropertyTypes);
            }

            return localProperty.OverridesProperty(parentProperty);
        }