Source: http://www.nrcmec.org/pdf/Manuals/CSE/student/2-2 java16-17.pdf