code: public static Matcher<MethodTree> hasAnnotationOnAnyOverriddenMethod(
        final String annotationClass) {
      return new Matcher<MethodTree>() {
        @Override
        public boolean matches(MethodTree tree, VisitorState state) {
          MethodSymbol methodSym = ASTHelpers.getSymbol(tree);
          if (methodSym == null) {
            return false;
          }
          if (ASTHelpers.hasAnnotation(methodSym, annotationClass, state)) {
            return true;
          }
          for (MethodSymbol method : ASTHelpers.findSuperMethods(methodSym, state.getTypes())) {
            if (ASTHelpers.hasAnnotation(method, annotationClass, state)) {
              return true;
            }
          }
          return false;
        }
      };
    }
docs: Matches if a method or any method it overrides has an annotation of the given type. JUnit 4's
  {@code @Test}, {@code @Before}, and {@code @After} annotations behave this way.
  
  @param annotationClass the binary class name of the annotation (e.g.
  "javax.annotation.Nullable", or "some.package.OuterClassName$InnerClassName")