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