boolean (PsiType left, PsiType right, int argId) { if (TypeConversionUtil.isAssignable(left, right, false)) { return true; } if (myArgumentsList instanceof PsiExpressionList) { final PsiExpression[] expressions = ((PsiExpressionList)myArgumentsList).getExpressions(); if (argId < expressions.length) { return isFunctionalTypeMoreSpecific(expressions[argId], right, left); } } return false; }