Give the primitive-union handlers a parameter and assert its member type, and assert the tagged-union widening handler's parameter too. A matcher without handler-parameter assertions cannot catch a wrong or `any` handler parameter: the matcher's own `(shape: T) => R` type is built from `T` and the handler return, so it stays correct even when `Member<T, K>` inversion is broken.