Source: https://classes.cs.uchicago.edu/archive/2010/winter/51023-1/presentations/scotto_objectadapter.pdf