Is it intentional that the super classes are checked for annotation first and then the current class? From a performance point of view, (typically) checking the current class first would avoid any unnecessary checks for the super class hierarchy which may not contain that annotation.