public @NotNull <T extends PsiModifierListOwner & PsiMember> List<PsiAnnotation> collectCopyableAnnotations(@NotNull T psiFromElement) {
    final PsiAnnotation[] fieldAnnotations = psiFromElement.getAnnotations();
    if (0 == fieldAnnotations.length) {
      // nothing to copy if no annotations defined
      return Collections.emptyList();
    }

    final Set<String> annotationNames = new HashSet<>();
    final Collection<String> existedShortAnnotationNames = ContainerUtil.map2Set(fieldAnnotations, PsiAnnotationSearchUtil::getShortNameOf);

    for (String shortName : existedShortAnnotationNames) {
      Set<String> fqns = shortNames.get(shortName);
      if (fqns != null) {
        annotationNames.addAll(fqns);
      }
    }

    final PsiClass containingClass = psiFromElement.getContainingClass();
    // append only for BASE_COPYABLE
    if (BASE_COPYABLE.equals(this) && null != containingClass) {
      Collection<String> configuredCopyableAnnotations =
        ConfigDiscovery.getInstance().getMultipleValueLombokConfigProperty(ConfigKey.COPYABLE_ANNOTATIONS, containingClass);

      for (String fqn : configuredCopyableAnnotations) {
        if (existedShortAnnotationNames.contains(StringUtil.getShortName(fqn))) {
          annotationNames.add(fqn);
        }
      }
    }

    if (annotationNames.isEmpty()) {
      return Collections.emptyList();
    }

    List<PsiAnnotation> result = new ArrayList<>();
    for (PsiAnnotation annotation : fieldAnnotations) {
      if (PsiAnnotationSearchUtil.checkAnnotationHasOneOfFQNs(annotation, annotationNames)) {
        result.add(annotation);
      }
    }
    return result;
  }
public @NotNull <T extends PsiModifierListOwner & PsiMember> List<PsiAnnotation> collectCopyableAnnotations(@NotNull T psiFromElement)