sig
  type t
  val empty : Univ_map.t
  val is_empty : Univ_map.t -> bool
  module Key :
    sig
      type 'a t
      val create : string -> ('-> Std_internal.Sexp.t) -> 'Univ_map.Key.t
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) -> 'Univ_map.Key.t -> Sexplib.Sexp.t
    end
  val set : Univ_map.t -> 'Univ_map.Key.t -> '-> Univ_map.t
  val mem : Univ_map.t -> 'Univ_map.Key.t -> bool
  val find : Univ_map.t -> 'Univ_map.Key.t -> 'a option
  val find_exn : Univ_map.t -> 'Univ_map.Key.t -> 'a
  val add :
    Univ_map.t ->
    'Univ_map.Key.t -> '-> [ `Duplicate | `Ok of Univ_map.t ]
  val add_exn : Univ_map.t -> 'Univ_map.Key.t -> '-> Univ_map.t
  val change :
    Univ_map.t -> 'Univ_map.Key.t -> ('a option -> 'a option) -> Univ_map.t
  val change_exn :
    Univ_map.t -> 'Univ_map.Key.t -> ('-> 'a) -> Univ_map.t
  module With_default :
    sig
      module Key :
        sig
          type 'a t
          val create :
            default:'->
            string ->
            ('-> Std_internal.Sexp.t) -> 'Univ_map.With_default.Key.t
        end
      val set :
        Univ_map.t -> 'Univ_map.With_default.Key.t -> '-> Univ_map.t
      val find : Univ_map.t -> 'Univ_map.With_default.Key.t -> 'a
      val change :
        Univ_map.t ->
        'Univ_map.With_default.Key.t -> ('-> 'a) -> Univ_map.t
    end
  module With_fold :
    sig
      module Key :
        sig
          type ('a, 'b) t
          val create :
            init:'->
            f:('-> '-> 'b) ->
            string ->
            ('-> Std_internal.Sexp.t) -> ('a, 'b) Univ_map.With_fold.Key.t
        end
      val set :
        Univ_map.t -> ('a, 'b) Univ_map.With_fold.Key.t -> '-> Univ_map.t
      val find : Univ_map.t -> ('a, 'b) Univ_map.With_fold.Key.t -> 'b
      val add :
        Univ_map.t -> ('a, 'b) Univ_map.With_fold.Key.t -> '-> Univ_map.t
      val change :
        Univ_map.t ->
        ('a, 'b) Univ_map.With_fold.Key.t -> ('-> 'b) -> Univ_map.t
    end
  module Multi :
    sig
      module Key :
        sig
          type 'a t
          val create :
            string -> ('-> Std_internal.Sexp.t) -> 'Univ_map.Multi.Key.t
        end
      val set :
        Univ_map.t -> 'Univ_map.Multi.Key.t -> 'a list -> Univ_map.t
      val find : Univ_map.t -> 'Univ_map.Multi.Key.t -> 'a list
      val add : Univ_map.t -> 'Univ_map.Multi.Key.t -> '-> Univ_map.t
      val change :
        Univ_map.t ->
        'Univ_map.Multi.Key.t -> ('a list -> 'a list) -> Univ_map.t
    end
  val sexp_of_t : Univ_map.t -> Sexplib.Sexp.t
end