boolean isLambdaCall(PsiMethodCallExpression lambdaCall, PsiLambdaExpression lambda) {
    String name = lambdaCall.getMethodExpression().getReferenceName();
    if (name == null || !myLambdaMethod.matcher(name).matches()) return false;
    PsiExpression[] args = lambdaCall.getArgumentList().getExpressions();
    if (args.length == 0) return false;
    int index = myParameterIndex == -1 ? args.length - 1 : myParameterIndex;
    if (args.length <= index || args[index] != lambda) return false;
    PsiMethod method = lambdaCall.resolveMethod();
    if (method == null) return false;
    PsiParameter[] parameters = method.getParameterList().getParameters();
    if (parameters.length <= index) return false;
    PsiClass fnClass = PsiUtil.resolveClassInClassTypeOnly(parameters[index].getType());
    return fnClass != null && LambdaUtil.getFunction(fnClass) != null &&
           InheritanceUtil.isInheritor(method.getContainingClass(), false, myClass);
  }
boolean isLambdaCall(PsiMethodCallExpression lambdaCall, PsiLambdaExpression lambda)