protected void Unsubscribe <X>(ValueObjectSetupBase <X> child, [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
     where X : IValueObject
 {
     if (child?.PropertyChanged != null)
     {
         child.PropertyChanged -= Propigators[propertyName].Propigate;
     }
 }
 protected void Subscribe <X>(ValueObjectSetupBase <X> child, [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
     where X : IValueObject
 => child.PropertyChanged += Propigators[propertyName].Propigate;