Rrefactored the code from ValidationRules to ValidationPredicates. Now the predicates have Match method which could be considered valid or invalid depending on the caller's context. Refactored the Throw method - now one can easily create their own extension methods for throwing context dependent exceptions.