public static void processInheritors(final CompletionParameters parameters,
                                       Collection<? extends PsiClassType> expectedClassTypes,
                                       final PrefixMatcher matcher, final Consumer<? super PsiType> consumer) {
    final PsiElement context = parameters.getPosition();
    GlobalSearchScope scope = context.getResolveScope();
    expectedClassTypes = ContainerUtil.mapNotNull(expectedClassTypes, type ->
      type.resolve() instanceof PsiTypeParameter ? null : PsiClassImplUtil.correctType(type, scope));

    //quick
    if (!processMostProbableInheritors(parameters.getOriginalFile(), context, expectedClassTypes, consumer)) return;

    //long
    for (final PsiClassType type : expectedClassTypes) {
      CodeInsightUtil.processSubTypes(type, context, false, matcher, consumer);
    }
  }
public static void processInheritors(final CompletionParameters parameters,
                                       Collection<? extends PsiClassType> expectedClassTypes,
                                       final PrefixMatcher matcher, final Consumer<? super PsiType> consumer)