Source: http://rmod-files.lille.inria.fr/FreeBooks/ByExample/05 - Chapter 3 - Methods.pdf