docs: public void visitAnnotations(AnnotatedNode node) {
          super.visitAnnotations(node);
  
          Map<Integer, List<AnnotationNode>> existing = new TreeMap<Integer, List<AnnotationNode>>();
          Map<Integer, List<AnnotationNode>> replacements = new LinkedHashMap<Integer, List<AnnotationNode>>();
          Map<Integer, AnnotationCollectorMode> modes = new LinkedHashMap<Integer, AnnotationCollectorMode>();
          int index = 0;
          for (AnnotationNode annotation : node.getAnnotations()) {
              findCollectedAnnotations(annotation, node, index, modes, existing, replacements);
              index++;
          }
          for (Map.Entry<Integer, List<AnnotationNode>> entry : replacements.entrySet()) {
              Integer replacementIndex = entry.getKey();
              List<AnnotationNode> annotationNodeList = entry.getValue();
              mergeCollectedAnnotations(modes.get(replacementIndex), existing, annotationNodeList);
              existing.put(replacementIndex, annotationNodeList);
          }
          List<AnnotationNode> mergedList = new ArrayList<AnnotationNode>();
          for (List<AnnotationNode> next : existing.values()) {
              mergedList.addAll(next);
          }
  
          node.getAnnotations().clear();
          node.getAnnotations().addAll(mergedList);
  
          for (AnnotationNode annotation : node.getAnnotations()) {
              Annotation transformClassAnnotation = getTransformClassAnnotation(annotation.getClassNode());
              if (transformClassAnnotation == null) {
                  // skip if there is no such annotation
                  continue;
              }
              addTransformsToClassNode(annotation, transformClassAnnotation);
          }
      }