Create the function unique name using the types of the argument, not the types in the declaration - this allows us to generate multiple versions when called with different types.