This is an exercise that I did more or less an year ago to learn how to use annotations.
The idea is to use the then new Java 5.0 language features to create finite state
machines with no separate configuration files. By this time, probably there are
already a million implementation around, but the excercise did help me quite a bit
to understand how annotations can be used. Hope you like it!