private static @Nullable Problem doCheckMethodCallOnFunctionalExpression(@NotNull Predicate<? super PsiMethodCallExpression> elementContainerPredicate,
                                                                           PsiExpression qualifier,
                                                                           PsiType interfaceType,
                                                                           @NotNull ReplaceFix fix) {
    final PsiMethodCallExpression call = ExpressionUtils.getCallForQualifier(qualifier);
    if (call == null) return null;

    final PsiMethod method = call.resolveMethod();
    final PsiElement referenceNameElement = call.getMethodExpression().getReferenceNameElement();
    boolean suitableMethod = method != null &&
                             referenceNameElement != null &&
                             !method.isVarArgs() &&
                             call.getArgumentList().getExpressionCount() == method.getParameterList().getParametersCount() &&
                             elementContainerPredicate.test(call);
    if (!suitableMethod) return null;
    final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(interfaceType);
    if (method == interfaceMethod || interfaceMethod != null && MethodSignatureUtil.isSuperMethod(interfaceMethod, method)) {
      return new Problem(referenceNameElement, fix);
    }
    return null;
  }
private static @Nullable Problem doCheckMethodCallOnFunctionalExpression(@NotNull Predicate<? super PsiMethodCallExpression> elementContainerPredicate,
                                                                           PsiExpression qualifier,
                                                                           PsiType interfaceType,
                                                                           @NotNull ReplaceFix fix)