Java annotation-based finite-state-machine library