@NotNull
  public static <T> Collection<T> getAnnotationValues(@NotNull PsiAnnotation psiAnnotation,
                                                      @NotNull String parameter,
                                                      @NotNull Class<T> asClass,
                                                      @NotNull List<T> defaultDumbValue) {
    Collection<T> result = Collections.emptyList();
    PsiAnnotationMemberValue attributeValue;
    if (DumbIncompleteModeUtil.isDumbOrIncompleteMode(psiAnnotation)) {
      attributeValue = psiAnnotation.findDeclaredAttributeValue(parameter);
      if (attributeValue == null) return defaultDumbValue;
    }
    else {
      attributeValue = psiAnnotation.findAttributeValue(parameter);
    }
    if (attributeValue instanceof PsiArrayInitializerMemberValue) {
      final PsiAnnotationMemberValue[] memberValues = ((PsiArrayInitializerMemberValue) attributeValue).getInitializers();
      result = new ArrayList<>(memberValues.length);

      for (PsiAnnotationMemberValue memberValue : memberValues) {
        T value = resolveElementValue(memberValue, asClass);
        if (null != value) {
          result.add(value);
        }
      }
    } else if (null != attributeValue) {
      T value = resolveElementValue(attributeValue, asClass);
      if (null != value) {
        result = Collections.singletonList(value);
      }
    }
    return result;
  }
@NotNull
  public static <T> Collection<T> getAnnotationValues(@NotNull PsiAnnotation psiAnnotation,
                                                      @NotNull String parameter,
                                                      @NotNull Class<T> asClass,
                                                      @NotNull List<T> defaultDumbValue)