private static boolean isAnnotated(ASTNode element) {
    PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement) element.getPsi();

    PsiElement qualifier = ref.getQualifier();
    if (qualifier instanceof PsiJavaCodeReferenceElement) {
      if (((PsiJavaCodeReferenceElement) qualifier).resolve() instanceof PsiPackage) {
        return false;
      }
      if (PsiTreeUtil.getChildOfType(qualifier, PsiAnnotation.class) != null) {
        return true;
      }
    }

    PsiModifierList modifierList = PsiImplUtil.findNeighbourModifierList(ref);
    if (modifierList != null) {
      for (PsiAnnotation annotation : modifierList.getAnnotations()) {
        if (AnnotationTargetUtil.findAnnotationTarget(annotation, PsiAnnotation.TargetType.TYPE_USE)
            != null) {
          return true;
        }
      }
    }

    return false;
  }
 public static boolean isAnnotationApplicableTo(
     GrAnnotation annotation, @NotNull TargetType... elementTypeFields) {
   return elementTypeFields.length == 0
       || AnnotationTargetUtil.findAnnotationTarget(annotation, elementTypeFields) != null;
 }
 /**
  * @deprecated use {@link AnnotationTargetUtil#findAnnotationTarget(PsiClass, TargetType...)} (to
  *     be removed ion IDEA 17)
  */
 @SuppressWarnings("unused")
 public static TargetType findApplicableTarget(
     @NotNull PsiClass annotationType, @NotNull TargetType... types) {
   return AnnotationTargetUtil.findAnnotationTarget(annotationType, types);
 }