Source: http://www-igm.univ-mlv.fr/~forax/ens/java-avance/cours/pdf/3-classe%20internes%20&%20enumeration.pdf