Source: https://www.csd.uwo.ca/~watt/pub/reprints/2005-oopsla-gidl.pdf