where Person would be annotated similarly to my example.
But this isn't quite the same as what I was doing, because it requires the
client of the (person) object to ask a 3rd party (personValidator) if it
is valid before interacting with it.
I suspect at the end of the day they are doing similar things to mine in
terms of reflection etc.