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