Added to example: what does happen when {silent: true} is not given?
Removed hasChanged() on senseless parameters 0 and '', they do not make sense (any more?) - only null is the only parameter with the special semantics Person.changes.isEmpty()
Ask my only question: can I construct invalid objects? Unfortunately, yes.