protected void SetPropertyValue <TPropertyValue>(TypedPropertyDefinition <TPropertyValue> typedProperty, TPropertyValue value)
 {
     this.propertyBag.SetValue <TPropertyValue>(typedProperty, value);
     if (typedProperty.IsLoggable)
     {
         this.loggableProperties[typedProperty.Name] = value;
     }
 }
 protected TPropertyValue GetPropertyValueOrDefault <TPropertyValue>(TypedPropertyDefinition <TPropertyValue> typedProperty)
 {
     return(this.propertyBag.GetValueOrDefault <TPropertyValue>(typedProperty));
 }