void (CompletionParameters parameters, PrefixMatcher matcher, ExpectedTypeInfo info, Consumer<? super PsiType> result, boolean quick) { PsiType infoType = info.getType(); PsiClass infoClass = PsiUtil.resolveClassInClassTypeOnly(infoType); if (info.getKind() == ExpectedTypeInfo.TYPE_OR_SUPERTYPE) { InheritanceUtil.processSupers(infoClass, true, superClass -> { if (!CommonClassNames.JAVA_LANG_OBJECT.equals(superClass.getQualifiedName())) { result.consume(JavaPsiFacade.getElementFactory(superClass.getProject()).createType(CompletionUtil.getOriginalOrSelf(superClass))); } return true; }); } else if (infoType instanceof PsiClassType && !quick) { JavaInheritorsGetter.processInheritors(parameters, Collections.singleton((PsiClassType)infoType), matcher, type -> { if (!infoType.equals(type)) { result.consume(type); } }); } }