`sig
type ('k, 'v) t
val t_of_sexp :
(Sexplib.Sexp.t -> 'a) ->
(Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) t
val sexp_of_t :
('a -> Sexplib.Sexp.t) ->
('b -> Sexplib.Sexp.t) -> ('a, 'b) t -> Sexplib.Sexp.t
val empty : ('k, 'v) Multi_map.t
val singleton : 'k -> 'v -> ('k, 'v) Multi_map.t
val is_empty : ('k, 'v) Multi_map.t -> bool
val add : key:'k -> data:'v -> ('k, 'v) Multi_map.t -> ('k, 'v) Multi_map.t
val find : ('k, 'v) Multi_map.t -> 'k -> 'v list
val remove : ('k, 'v) Multi_map.t -> 'k -> ('k, 'v) Multi_map.t
val set :
key:'k -> data:'v list -> ('k, 'v) Multi_map.t -> ('k, 'v) Multi_map.t
val mem : ('k, 'v) Multi_map.t -> 'k -> bool
val keys : ('k, 'v) Multi_map.t -> 'k list
val iter : f:(key:'k -> data:'v -> unit) -> ('k, 'v) Multi_map.t -> unit
val map : f:('a -> 'b) -> ('k, 'a) Multi_map.t -> ('k, 'b) Multi_map.t
val mapi :
f:(key:'k -> data:'a -> 'b) ->
('k, 'a) Multi_map.t -> ('k, 'b) Multi_map.t
val fold :
f:(key:'k -> data:'v -> 'a -> 'a) ->
('k, 'v) Multi_map.t -> init:'a -> 'a
val filter :
f:(key:'k -> data:'v -> bool) ->
('k, 'v) Multi_map.t -> ('k, 'v) Multi_map.t
val reduce :
f:('v list -> 'r) -> ('k, 'v) Multi_map.t -> ('k, 'r) Core.Std.Map.Poly.t
end`