AutoCompletionDecision (@NotNull AutoCompletionContext context) { final CompletionParameters parameters = context.getParameters(); if (parameters.getCompletionType() != CompletionType.SMART && parameters.getCompletionType() != CompletionType.BASIC) { return null; } if (ParameterInfoControllerBase.areParameterTemplatesEnabledOnCompletion()) { return null; } final LookupElement[] items = context.getItems(); if (ContainerUtil.exists(items, t -> t.as(MethodTags.TagLookupElementDecorator.class) != null)) { return AutoCompletionDecision.SHOW_LOOKUP; } if (items.length > 1) { String commonName = null; final ArrayList<PsiMethod> allMethods = new ArrayList<>(); for (LookupElement item : items) { Object o = item.getPsiElement(); if (item.getUserData(JavaCompletionUtil.FORCE_SHOW_SIGNATURE_ATTR) != null || !(o instanceof PsiMethod)) { return AutoCompletionDecision.SHOW_LOOKUP; } String name = joinLookupStrings(item); if (commonName != null && !commonName.equals(name)) { return AutoCompletionDecision.SHOW_LOOKUP; } commonName = name; allMethods.add((PsiMethod)o); } for (LookupElement item : items) { JavaCompletionUtil.putAllMethods(item, allMethods); } LookupElement best = findBestOverload(items); markAsMerged(best); return AutoCompletionDecision.insertItem(best); } return super.handleAutoCompletionPossibility(context); }