This method will be called with an instruction container object and is expected to apply the instructions contained therein to the business object.
In this base class the method does nothing; subclasses will implement it.

This method is given an exception container,
which it fills with exceptions that arise from checking.
Since we're dealing exclusively with value objects,
we can check for valid characters,
field lengths,
some wellformedness and validity (in case of email value objects,
for example),
all from within the business objects themselves.
By moving part of the checking code into the objects themselves we make the policy stage more generic.
Other registries can simply define business objects in terms of different value objects.

If the business object has a defined key,
it will be updated,
otherwise it will be stored.
The business object will have a key when it has been stored or originally read from the storage.
New business objects that haven't been stored yet won't have a key,
so they will be inserted.