There's always something to catch *after* the pull

I noticed that the TypeMapper was doing the right thing for function return types, finding the narrowest known type mapping that the return type could be assigned to. But it was also doing the same thing for function parameters, instead of looking for the widest known mapping that could be assigned to the parameter.

I had not used any test cases interesting enough to reveal that, but it could have given somebody a bit of head-scratching down the road.