docs: @Override
    public Description matchAnnotation(AnnotationTree tree, VisitorState state) {
      if (!ANNOTATION_MATCHER.matches(tree, state)) {
        return Description.NO_MATCH;
      }
  
      MethodTree methodTree = ASTHelpers.findEnclosingNode(state.getPath(), MethodTree.class);
      if (methodTree == null) {
        return Description.NO_MATCH;
      }
  
      MethodSymbol methodSym = ASTHelpers.getSymbol(methodTree);
      if (methodSym == null) {
        return Description.NO_MATCH;
      }
  
      if (!methodSym.getModifiers().contains(Modifier.ABSTRACT)) {
        return Description.NO_MATCH;
      }
  
      // Match, find the matched annotation to use for the error message.
      Symbol annotationSym = ASTHelpers.getSymbol(tree);
      if (annotationSym == null) {
        return Description.NO_MATCH;
      }
  
      return buildDescription(tree)
          .setMessage(
              String.format(
                  "@%s cannot be applied to an abstract method", annotationSym.getSimpleName()))
          .build();
    }