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