functor
  (X : sig
         type 'a input
         type 'a output
         type 'a t =
             'a Type_generic.Make_named_for_closure.input ->
             'a 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 -> 'a Typename.t -> 'a t
    val get_wip_computation : 'a t -> 'a X.t
    val set_final_computation : 'a t -> 'a X.t -> 'a X.t
    val share : 'a Std_internal.Typerep.t -> bool
  end