void (@NotNull CompletionParameters parameters, PsiElement position, CompletionResultSet result, JavaCompletionSession session, PrefixMatcher matcher) { session.registerBatchItems(getFastIdentifierVariants(parameters, position, matcher, position.getParent(), session)); if (JavaSmartCompletionContributor.AFTER_NEW.accepts(position)) { session.flushBatchItems(); boolean smart = parameters.getCompletionType() == CompletionType.SMART; ConstructorInsertHandler handler = smart ? ConstructorInsertHandler.SMART_INSTANCE : ConstructorInsertHandler.BASIC_INSTANCE; ExpectedTypeInfo[] types = JavaSmartCompletionContributor.getExpectedTypes(parameters); new JavaInheritorsGetter(handler).generateVariants(parameters, matcher, types, lookupElement -> { if ((smart || !isSuggestedByKeywordCompletion(lookupElement)) && result.getPrefixMatcher().prefixMatches(lookupElement)) { session.registerClassFrom(lookupElement); result.addElement(smart ? JavaSmartCompletionContributor.decorate(lookupElement, Arrays.asList(types)) : AutoCompletionPolicy.NEVER_AUTOCOMPLETE.applyPolicy(lookupElement)); } }); } suggestSmartCast(parameters, session, false, result); }