Argument type validation with user-friendly error messages

Perhaps put double quotes around `{0}` and `{1}` to designate them as variants?