functor
  (X : sig
         type 'a input
         type 'a output
         type 'a t =
             'Type_generic.Make_named_for_closure.input ->
             'Type_generic.Make_named_for_closure.output
       end->
  sig
    module Context : sig type t val create : unit -> t end
    type 'a t
    val init : Context.t -> 'Typename.t -> 'a t
    val get_wip_computation : 'a t -> 'X.t
    val set_final_computation : 'a t -> 'X.t -> 'X.t
    val share : 'Std_internal.Typerep.t -> bool
  end