Source: https://www.iro.umontreal.ca/~lapalme/ift1025/IntroductionAEclipse.pdf