Caching assumes the value written is cacheable.
What about rejected values? Are they ok?
E.g. if you had a Z instance that was the modulus' index of a list. You should be able to write any number and it will modulus it and then reading the value should show the modulus' value.
The internal ignoreNotification
could be removed and we always diff on notify instead...