void (PsiElement element, PsiReference reference, LookupElement baseItem, JavaSmartCompletionParameters parameters, Consumer<? super LookupElement> result) { final Object object = baseItem.getObject(); try { PsiType itemType = JavaCompletionUtil.getLookupElementType(baseItem); if (itemType instanceof PsiWildcardType) { itemType = ((PsiWildcardType)itemType).getExtendsBound(); } if (itemType == null) return; PsiUtil.ensureValidType(itemType, baseItem + "; " + baseItem.getClass()); final PsiElement element1 = reference.getElement(); final PsiElement qualifier = element1 instanceof PsiJavaCodeReferenceElement ? ((PsiJavaCodeReferenceElement)element1).getQualifier() : null; final PsiType expectedType = parameters.getExpectedType(); ChainedCallCompletion.addChains(element, baseItem, result, itemType, expectedType, parameters); final PsiFile file = parameters.getParameters().getOriginalFile(); final String prefix = getItemText(file, object); if (prefix == null) return; FromArrayConversion.addConversions(element, prefix, itemType, result, qualifier, expectedType); ToArrayConversion.addConversions(file, element, prefix, itemType, result, qualifier, expectedType); ArrayMemberAccess.addMemberAccessors(element, prefix, itemType, qualifier, result, (PsiModifierListOwner)object, expectedType); } catch (IncorrectOperationException ignored) { } }