type _ t = C: { f: ('a -> [<`X]) t } -> [<`X] t