Set<LookupElement> (final PsiElement element, PsiJavaCodeReferenceElement reference, final ElementFilter filter, final boolean acceptClasses, final boolean acceptMembers, CompletionParameters parameters, final PrefixMatcher matcher) { ElementFilter checkClass = new ElementFilter() { @Override public boolean isAcceptable(Object element, PsiElement context) { return filter.isAcceptable(element, context); } @Override public boolean isClassAcceptable(Class hintClass) { if (ReflectionUtil.isAssignable(PsiClass.class, hintClass)) { return acceptClasses; } if (ReflectionUtil.isAssignable(PsiVariable.class, hintClass) || ReflectionUtil.isAssignable(PsiMethod.class, hintClass) || ReflectionUtil.isAssignable(CandidateInfo.class, hintClass)) { return acceptMembers; } return false; } }; JavaCompletionProcessor.Options options = JavaCompletionProcessor.Options.DEFAULT_OPTIONS.withFilterStaticAfterInstance(parameters.getInvocationCount() <= 1); return JavaCompletionUtil.processJavaReference(element, reference, checkClass, options, matcher::prefixMatches, parameters); }