This is a modified version from THINKING IN JAVA 4TH EDITION.