why don't you do this check in setValue here: https://github.com/jackalope/jackalope/blob/1db307d81a0e2857b6b034d16fbb4b13f5531169/src/Jackalope/Property.php#L175 that would sound more logic and the state of the object would not get inconsistent (the property would be considered modified)

i think the _setValue is only used when reading from the backend and similar operations. and if you don't trust the user, we have lost anyways as modified will not be set when we do not come through setValue.