ParameterList parameters = fun.getParameterLists().get(0);
for (TypeParameter tp: fun.getTypeParameters()) {
ProducedType it = inferTypeArgument(that,
that.getPrimary().getTypeModel(),
tp, parameters);
if (it.containsUnknowns()) {
that.addError("could not infer type argument from given arguments: type parameter '" +
tp.getName() + "' could not be inferred");
}
else {
it = constrainInferredType(fun, tp, it);