https://9dok.net/document/qvlmnppr-programming-by-contract.html