Why does it need to be a proper subtype? This would prevent coercing between two types that are considered equivalent. For example, between a newtype and the underlying `uint` (which is to say, you could define the coercion in one direction, but not the other).