Various constraints and corresponding annotations. Most constraints has public static valid() method so they can be used independently.