[WIP] Argument type validation with user-friendly error messages

This can be a `set`.