Constraint is an Interface needed to perform a Validation.
User can define a new type of Validation by implementing this
Interface.
Method match defines the Validation logic. This method
returns an empty collection if the value being validated is valid;
else it returns a Collection with a {@link ConstraintFailure}
object in it.