public void SetDefaultValue(string propertyName, object value)
        {
            if (runtimeProxies.TryGetValue(propertyName, out IRuntimeProxy runtimeProxy))
            {
                runtimeProxy.Manager.ObservableProperty.OverwriteFrom(value, false);
            }

            if (collectionProxies.TryGetValue(propertyName, out ICollectionProxy collectionProxy))
            {
                collectionProxy.AddDefaultElements((IEnumerable)value);
            }

            if (!ObservableProperty.TrySetDefaultValue(propertyName, value))
            {
                throw new NotSupportedException(propertyName);
            }
        }