static int check_arguments_with_score (Type [] types, ParameterInfo [] args)
{
int worst = -1;
for (int i = 0; i < types.Length; ++i) {
int res = check_type_with_score (types [i], args [i].ParameterType);
if (res == -1)
return -1;
if (worst < res)
worst = res;
}
return worst;
}