void (PairProcessor<PsiClass, String> processor) { final Project project = myElement.getProject(); final GlobalSearchScope searchScope = PsiUtil.isIdeaProject(project) ? GlobalSearchScopesCore.projectProductionScope(project) : getElement().getResolveScope(); final PsiClass statePsiClass = JavaPsiFacade.getInstance(project).findClass(State.class.getName(), searchScope); if (statePsiClass == null) { return; } final Query<PsiClass> query = AnnotatedElementsSearch.searchPsiClasses(statePsiClass, searchScope); query.forEach(psiClass -> { final PsiAnnotation stateAnnotation = AnnotationUtil.findAnnotation(psiClass, true, State.class.getName()); assert stateAnnotation != null : psiClass; if (AnnotationUtil.findDeclaredAttribute(stateAnnotation, "presentableName") != null) return true; final String nameAttributeValue = AnnotationUtil.getDeclaredStringAttributeValue(stateAnnotation, "name"); if (StringUtil.isEmpty(nameAttributeValue)) return true; return processor.process(psiClass, nameAttributeValue); }); }