private static PsiAnnotation[] getHierarchyAnnotations(PsiModifierListOwner listOwner) {
    final Set<PsiAnnotation> all = new HashSet<>() {
      @Override
      public boolean add(PsiAnnotation o) {
        // don't overwrite "higher level" annotations
        return !contains(o) && super.add(o);
      }
    };

    PsiModifierList modifierList = listOwner.getModifierList();
    if (modifierList != null) {
      ContainerUtil.addAll(all, modifierList.getAnnotations());
    }
    for (PsiModifierListOwner superOwner : AnnotationUtil.getSuperAnnotationOwners(listOwner)) {
      modifierList = superOwner.getModifierList();
      if (modifierList != null) {
        ContainerUtil.addAll(all, modifierList.getAnnotations());
      }
    }
    return all.isEmpty() ? PsiAnnotation.EMPTY_ARRAY : all.toArray(PsiAnnotation.EMPTY_ARRAY);
  }
private static PsiAnnotation[] getHierarchyAnnotations(PsiModifierListOwner listOwner)