The caller must run this in a block synchronized on this to serialize validations with changes to the set of property callbacks