Use DomainException over InvalidArgumentException.

Makes more sense to thrown that type of exception when a value does not
adhere to a defined valid data domain, e.g., an expected type.
Add InstanceOfCondition.