Constraints have been generalised to allow matching requiring and providing constraints against each other.