TheThinkinginJavaAnnotatedSolutionGuide3rd.pdf