source code for think in java