ValidationInfo (final PsiMethodCallExpression expression) { final PsiType[] argumentTypes = expression.getArgumentList().getExpressionTypes(); final PsiType methodReturnType = expression.getType(); if (methodReturnType == null) { return null; } final JavaResolveResult result = expression.getMethodExpression().advancedResolve(false); final PsiElement element = result.getElement(); if (!(element instanceof PsiMethod)) { return null; } final PsiParameter[] expectedParameters = ((PsiMethod)element).getParameterList().getParameters(); if (argumentTypes.length != expectedParameters.length) { return null; } final PsiSubstitutor methodSubstitutor = result.getSubstitutor(); return validate(argumentTypes, methodReturnType, methodSubstitutor, expression); }