Source: https://perso.liris.cnrs.fr/veronique.deslandres/lib/exe/fetch.php?media=start:ens:java:tp2_aspe.pdf