sig
  val add : key:BatMap.S.key -> data:'a -> 'a BatMap.S.t -> 'a BatMap.S.t
  val iter : f:(key:BatMap.S.key -> data:'a -> unit) -> 'a BatMap.S.t -> unit
  val map : f:('a -> 'b) -> 'a BatMap.S.t -> 'b BatMap.S.t
  val mapi :
    f:(key:BatMap.S.key -> data:'a -> 'b) -> 'a BatMap.S.t -> 'b BatMap.S.t
  val filterv : f:('a -> bool) -> 'a BatMap.S.t -> 'a BatMap.S.t
  val filter :
    f:(BatMap.S.key -> 'a -> bool) -> 'a BatMap.S.t -> 'a BatMap.S.t
  val fold :
    f:(key:BatMap.S.key -> data:'a -> 'b -> 'b) ->
    'a BatMap.S.t -> init:'b -> 'b
  val compare :
    cmp:('a -> 'a -> int) -> 'a BatMap.S.t -> 'a BatMap.S.t -> int
  val equal :
    cmp:('a -> 'a -> bool) -> 'a BatMap.S.t -> 'a BatMap.S.t -> bool
end