`sig type ('a, 'b) t val empty : ('a, 'b) BatMultiMap.t val is_empty : ('a, 'b) BatMultiMap.t -> bool val add : 'a -> 'b -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val find : 'a -> ('a, 'b) BatMultiMap.t -> 'b BatSet.t val remove_all : 'a -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val remove : 'a -> 'b -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val mem : 'a -> ('a, 'b) BatMultiMap.t -> bool val iter : ('a -> 'b BatSet.t -> unit) -> ('a, 'b) BatMultiMap.t -> unit val map : ('b BatSet.t -> 'c BatSet.t) -> ('a, 'b) BatMultiMap.t -> ('a, 'c) BatMultiMap.t val mapi : ('a -> 'b BatSet.t -> 'c BatSet.t) -> ('a, 'b) BatMultiMap.t -> ('a, 'c) BatMultiMap.t val fold : ('b BatSet.t -> 'c -> 'c) -> ('a, 'b) BatMultiMap.t -> 'c -> 'c val foldi : ('a -> 'b BatSet.t -> 'c -> 'c) -> ('a, 'b) BatMultiMap.t -> 'c -> 'c val modify : 'a -> ('b BatSet.t -> 'b BatSet.t) -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val modify_def : 'b BatSet.t -> 'a -> ('b BatSet.t -> 'b BatSet.t) -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val modify_opt : 'a -> ('b BatSet.t option -> 'b BatSet.t option) -> ('a, 'b) BatMultiMap.t -> ('a, 'b) BatMultiMap.t val enum : ('a, 'b) BatMultiMap.t -> ('a * 'b) BatEnum.t val of_enum : ('a * 'b) BatEnum.t -> ('a, 'b) BatMultiMap.t module Infix : sig val ( --> ) : ('a, 'b) BatMultiMap.t -> 'a -> 'b BatSet.t val ( <-- ) : ('a, 'b) BatMultiMap.t -> 'a * 'b -> ('a, 'b) BatMultiMap.t end val print : ?first:string -> ?last:string -> ?sep:string -> ?kvsep:string -> ('a BatInnerIO.output -> 'b -> unit) -> ('a BatInnerIO.output -> 'c -> unit) -> 'a BatInnerIO.output -> ('b, 'c) BatMultiMap.t -> unit end`