sig
  module Key :
    sig
      type ('a, 'b) t
      val create :
        init:'->
        f:('-> '-> 'b) ->
        name:string ->
        ('-> Std_internal.Sexp.t) -> ('a, 'b) Univ_map.With_fold.Key.t
    end
  val set : t -> ('a, 'b) Univ_map.With_fold.Key.t -> '-> t
  val find : t -> ('a, 'b) Univ_map.With_fold.Key.t -> 'b
  val add : t -> ('a, 'b) Univ_map.With_fold.Key.t -> '-> t
  val change : t -> ('a, 'b) Univ_map.With_fold.Key.t -> ('-> 'b) -> t
end