if (!(element instanceof PsiClass) || !element.isValid() || !element.isPhysical()) {
//noinspection unchecked
return Collections.emptyList();
}
final List<Psi> result = new ArrayList<Psi>();
final PsiClass psiClass = (PsiClass) element;
LOG.info("Called for class: " + psiClass.getQualifiedName() + " type: " + type.getName());
final PsiMethod[] classMethods = collectClassMethodsIntern((PsiClassImpl) psiClass);
if (type.isAssignableFrom(PsiField.class)) {
LOG.info("collect field of class: " + psiClass.getQualifiedName());
processPsiClassAnnotations(result, psiClass, classMethods, type);
} else if (type.isAssignableFrom(PsiMethod.class)) {
LOG.info("collect methods of class: " + psiClass.getQualifiedName());
cleanAttributeUsage(psiClass);
processPsiClassAnnotations(result, psiClass, classMethods, type);
processPsiClassFieldAnnotation(result, psiClass, classMethods, type);
}