boolean (final PsiParameter[] parms, final PsiExpression[] args, int length, PsiSubstitutor substitutor) { for (int j = 0; j < length; j++) { PsiParameter parm = parms[j]; PsiExpression arg = args[j]; assert parm.isValid(); assert arg.isValid(); PsiType parmType = parm.getType(); PsiType argType = arg.getType(); if (argType == null) continue; if (parmType instanceof PsiEllipsisType ) { parmType = ((PsiEllipsisType)parmType).getComponentType(); } parmType = substitutor.substitute(parmType); if (!parmType.isAssignableFrom(argType) && !(parm.getType() instanceof PsiEllipsisType && argType instanceof PsiArrayType && parmType.isAssignableFrom(((PsiArrayType)argType).getComponentType()))) { return false; } } return true; }