Source: https://www.cs.umd.edu/class/fall2013/cmsc132h/slides/Week4/InnerClasses.pdf