This is a JAVA annotation processor from THINKING IN JAVA 4TH EDITION. I just make a little modification on it.