This chapter is taken from
www.java2s.com
.