`functor
(Data : sig
type 'a t
val sexp_of_t :
('a -> Sexplib.Sexp.t) -> 'a Univ_map.Make.t -> Sexplib.Sexp.t
end) ->
sig
type t
type 'a data = 'a Data.t
val invariant : t Invariant_intf.inv
val empty : t
val is_empty : t -> bool
val set : t -> 'a Key.t -> 'a data -> t
val mem : t -> 'a Key.t -> bool
val find : t -> 'a Key.t -> 'a data option
val find_exn : t -> 'a Key.t -> 'a data
val add : t -> 'a Key.t -> 'a data -> [ `Duplicate | `Ok of t ]
val add_exn : t -> 'a Key.t -> 'a data -> t
val change : t -> 'a Key.t -> ('a data option -> 'a data option) -> t
val change_exn : t -> 'a Key.t -> ('a data -> 'a data) -> t
module Packed : sig type t = T : 'a Key.t * 'a data -> t end
val to_alist : t -> Packed.t list
val sexp_of_t : t -> Sexplib.Sexp.t
end`