public override void SetValue(object value)
{
var fieldType = FieldInfo.FieldType;
var safeValue = fieldType.MakeSafeValue(value);
// if safeValue matches the existing value, then don't call set
if (EqualsCurrentValue(safeValue))
return;
FieldInfo.SetValue(Source, safeValue);
}