Source: https://www.cs.unh.edu/~cs619/slides/DesignByContract.pdf