boolean (@NotNull PsiElement target, @NotNull ResolveState substitutor, @NotNull PsiElement place, @NotNull PsiScopeProcessor processor) { if (target instanceof PsiPackage) { return processPackageDeclarations(substitutor, place, (PsiPackage)target, processor); } if (target instanceof PsiClass) { PsiClass[] inners = ((PsiClass)target).getInnerClasses(); if (((PsiClass)target).hasTypeParameters()) { substitutor = substitutor.put(PsiSubstitutor.KEY, createRawSubstitutor((PsiClass)target)); } for (PsiClass inner : inners) { if (!processor.execute(inner, substitutor)) return false; } } else { LOG.error("Unexpected target type: " + target); } return true; }