`approx_type` (which approximates the type of a constraint in a recursive definition) does not handle structural types. This can lead to some surprising behaviour, since using an alias of a structural type does work.