void (PsiParameter[] parameters, PsiExpression[] args, PsiMethod method, boolean varargs) { if (method != null) { initThrowsConstraints(method); } if (parameters.length > 0) { for (int i = 0; i < args.length; i++) { //don't infer anything if number of parameters differ and method is not vararg if (!varargs && i >= parameters.length) { continue; } if (args[i] != null && isPertinentToApplicability(args[i], method)) { PsiType parameterType = getParameterType(parameters, i, mySiteSubstitutor, varargs); if (method != null && PsiUtil.isRawSubstitutor(method, mySiteSubstitutor)) { parameterType = TypeConversionUtil.erasure(parameterType); } LOG.assertTrue(parameterType != null); if (!ignoreLambdaConstraintTree(args[i])) { addConstraint(new ExpressionCompatibilityConstraint(args[i], substituteWithInferenceVariables(parameterType))); } } } } }