docs: public static int getVisibility(AnnotationNode anno, AnnotatedNode node, Class<? extends AnnotatedNode> clazz, int originalModifiers) {
          List<AnnotationNode> annotations = node.getAnnotations(VISIBILITY_OPTIONS_TYPE);
          if (annotations.isEmpty() || anno == null) return originalModifiers;
  
          String visId = getMemberStringValue(anno, "visibilityId", null);
  
          Visibility vis = null;
          if (visId == null) {
              vis = getVisForAnnotation(clazz, annotations.get(0), null);
          } else {
              for (AnnotationNode visAnno : annotations) {
                  vis = getVisForAnnotation(clazz, visAnno, visId);
                  if (vis != Visibility.UNDEFINED) break;
              }
          }
          if (vis == null || vis == Visibility.UNDEFINED) return originalModifiers;
  
          int result = originalModifiers & ~(ACC_PUBLIC | ACC_PROTECTED | ACC_PRIVATE);
          return result | vis.getModifier();
      }