hasValueChanged method
Determines whether the current value differs from the original value.
Specialized property types can override this when their value semantics
differ from the default == comparison.
Implementation
bool hasValueChanged(T currentValue, T originalValue) => currentValue != originalValue;