This is not very flexible. But I understand this is the only way with annotations.

Maybe the method's return type could be something different than `Void`. Then you can use it to decide what to do.
As with Wicket's visitors - stop, continue, continueDontGoDeeper.