static @NotNull Set<LookupElement> processJavaReference(@NotNull PsiElement element,
                                                          @NotNull PsiJavaCodeReferenceElement javaReference,
                                                          @NotNull ElementFilter elementFilter,
                                                          @NotNull JavaCompletionProcessor.Options options,
                                                          @NotNull Condition<? super String> nameCondition,
                                                          @NotNull CompletionParameters parameters) {
    PsiElement elementParent = element.getContext();
    if (elementParent instanceof PsiReferenceExpression) {
      PsiExpression qualifierExpression = ((PsiReferenceExpression)elementParent).getQualifierExpression();
      if (qualifierExpression instanceof PsiReferenceExpression) {
        PsiElement resolve = ((PsiReferenceExpression)qualifierExpression).resolve();
        if (resolve instanceof PsiParameter) {
          PsiElement declarationScope = ((PsiParameter)resolve).getDeclarationScope();
          if (((PsiParameter)resolve).getType() instanceof PsiLambdaParameterType) {
            PsiLambdaExpression lambdaExpression = (PsiLambdaExpression)declarationScope;
            if (PsiTypesUtil.getExpectedTypeByParent(lambdaExpression) == null) {
              int parameterIndex = lambdaExpression.getParameterList().getParameterIndex((PsiParameter)resolve);
              Set<LookupElement> set = new LinkedHashSet<>();
              boolean overloadsFound = LambdaUtil.processParentOverloads(lambdaExpression, functionalInterfaceType -> {
                PsiType qualifierType = LambdaUtil.getLambdaParameterFromType(functionalInterfaceType, parameterIndex);
                if (qualifierType instanceof PsiWildcardType) {
                  qualifierType = ((PsiWildcardType)qualifierType).getBound();
                }
                if (qualifierType == null) return;

                PsiReferenceExpression fakeRef = createReference("xxx.xxx", createContextWithXxxVariable(element, qualifierType));
                set.addAll(processJavaQualifiedReference(fakeRef.getReferenceNameElement(), fakeRef, elementFilter, options, nameCondition, parameters));
              });
              if (overloadsFound) return set;
            }
          }
        }
      }
    }
    return processJavaQualifiedReference(element, javaReference, elementFilter, options, nameCondition, parameters);
  }
static @NotNull Set<LookupElement> processJavaReference(@NotNull PsiElement element,
                                                          @NotNull PsiJavaCodeReferenceElement javaReference,
                                                          @NotNull ElementFilter elementFilter,
                                                          @NotNull JavaCompletionProcessor.Options options,
                                                          @NotNull Condition<? super String> nameCondition,
                                                          @NotNull CompletionParameters parameters)