Currently, implementations permit conversions to/from `unsafe.Pointer` **and** to/from types with underlying type `unsafe.Pointer`. Consequently, unsafe conversions can be hidden because package unsafe doesn't even have to be imported. This was arguably an "implementation mistake" which we should fix. See also #19306.