A lot of our extensions use `convert_to_*()` and `zval_get_TYPE()` engine functions which might hide some implicit casts to the end users. Ideally, those usages should be reviewed and use the corresponding `try` function when available.