Thinking in java 4th