void (Consumer<? super LookupElement> result, PsiElement position, JavaCompletionSession session) { if (AFTER_DOT.accepts(position) || psiElement().inside(psiAnnotation()).accepts(position) && !expectsClassLiteral(position)) { return; } boolean afterNew = JavaSmartCompletionContributor.AFTER_NEW.accepts(position) && !psiElement().afterLeaf(psiElement().afterLeaf(".")).accepts(position); if (afterNew) { Set<PsiType> expected = ContainerUtil.map2Set(JavaSmartCompletionContributor.getExpectedTypes(position, false), ExpectedTypeInfo::getDefaultType); boolean addAll = expected.isEmpty() || ContainerUtil.exists(expected, t -> t.equalsToText(CommonClassNames.JAVA_LANG_OBJECT) || t.equalsToText(CommonClassNames.JAVA_IO_SERIALIZABLE)); PsiElementFactory factory = JavaPsiFacade.getElementFactory(position.getProject()); for (String primitiveType : PRIMITIVE_TYPES) { PsiType array = factory.createTypeFromText(primitiveType + "[]", null); if (addAll || expected.contains(array)) { result.consume(PsiTypeLookupItem.createLookupItem(array, null)); } } return; } boolean inCast = psiElement() .afterLeaf(psiElement().withText("(").withParent(psiElement(PsiParenthesizedExpression.class, PsiTypeCastExpression.class))) .accepts(position); boolean typeFragment = position.getContainingFile() instanceof PsiTypeCodeFragment && PsiTreeUtil.prevVisibleLeaf(position) == null; boolean declaration = isDeclarationStart(position); boolean expressionPosition = isExpressionPosition(position); boolean inGenerics = PsiTreeUtil.getParentOfType(position, PsiReferenceParameterList.class) != null; if (isVariableTypePosition(position) || inGenerics || inCast || declaration || typeFragment || expressionPosition) { for (String primitiveType : PRIMITIVE_TYPES) { if (!session.isKeywordAlreadyProcessed(primitiveType)) { result.consume(BasicExpressionCompletionContributor.createKeywordLookupItem(position, primitiveType)); } } if (expressionPosition && !session.isKeywordAlreadyProcessed(PsiKeyword.VOID)) { result.consume(BasicExpressionCompletionContributor.createKeywordLookupItem(position, PsiKeyword.VOID)); } } if (declaration) { LookupElement item = BasicExpressionCompletionContributor.createKeywordLookupItem(position, PsiKeyword.VOID); result.consume(new OverridableSpace(item, TailTypes.humbleSpaceBeforeWordType())); } else if (typeFragment && ((PsiTypeCodeFragment)position.getContainingFile()).isVoidValid()) { result.consume(BasicExpressionCompletionContributor.createKeywordLookupItem(position, PsiKeyword.VOID)); } }