needed in some cases even though t is exported and is a gadt
X : sig ... end
val lift : ('a, 'b) t ‑> ('a X.t, 'b X.t) t