Of this constraints, the base class constaint and the interface constraint are probably the most often used, with the remaining adding fine-grained control.