boolean (@Nullable PsiClass aClass, @NotNull Collection<PsiClass> weakestTypeClasses) { if (aClass == null) { return false; } boolean shouldAdd = true; for (final Iterator<PsiClass> iterator = weakestTypeClasses.iterator(); iterator.hasNext(); ) { ProgressManager.checkCanceled(); final PsiClass weakestTypeClass = iterator.next(); if (weakestTypeClass.equals(aClass)) { return true; } if (aClass.isInheritor(weakestTypeClass, true)) { iterator.remove(); } else if (weakestTypeClass.isInheritor(aClass, true)) { shouldAdd = false; } else { iterator.remove(); shouldAdd = false; } } if (!shouldAdd) { return false; } weakestTypeClasses.add(aClass); return true; }