Source: https://lipn.univ-paris13.fr/~gerard/docs/corrections/uml-corr05.pdf