I think this needs a substantially larger comment explaining how it relates to `type-case`.

I think the answer is that:
* It doesn't recur into objects/paths/filters.
* It only handles "simple" cases.
* It passes along the variance to the recursive call.

Is that right?