thinking in java 3th