boolean (@NotNull PsiClass aClass, @NotNull Processor<? super PsiClass> superProcessor, @NotNull Set<? super PsiClass> visited) { if (!visited.add(aClass)) return true; for (final PsiClass intf : aClass.getInterfaces()) { if (!superProcessor.process(intf) || !processSupers(intf, superProcessor, visited)) return false; } final PsiClass superClass = aClass.getSuperClass(); if (superClass != null) { if (!superProcessor.process(superClass) || !processSupers(superClass, superProcessor, visited)) return false; } return true; }