sig
  val add : 'BatHashtbl.S.t -> key:BatHashtbl.S.key -> data:'-> unit
  val replace : 'BatHashtbl.S.t -> key:BatHashtbl.S.key -> data:'-> unit
  val iter :
    f:(key:BatHashtbl.S.key -> data:'-> unit) -> 'BatHashtbl.S.t -> unit
  val for_all :
    f:(key:BatHashtbl.S.key -> data:'-> bool) -> 'BatHashtbl.S.t -> bool
  val map :
    f:(key:BatHashtbl.S.key -> data:'-> 'b) ->
    'BatHashtbl.S.t -> 'BatHashtbl.S.t
  val map_inplace :
    f:(key:BatHashtbl.S.key -> data:'-> 'a) -> 'BatHashtbl.S.t -> unit
  val filter : f:('-> bool) -> 'BatHashtbl.S.t -> 'BatHashtbl.S.t
  val filter_inplace : f:('-> bool) -> 'BatHashtbl.S.t -> unit
  val filteri :
    f:(key:BatHashtbl.S.key -> data:'-> bool) ->
    'BatHashtbl.S.t -> 'BatHashtbl.S.t
  val filteri_inplace :
    f:(key:BatHashtbl.S.key -> data:'-> bool) -> 'BatHashtbl.S.t -> unit
  val filter_map :
    f:(key:BatHashtbl.S.key -> data:'-> 'b option) ->
    'BatHashtbl.S.t -> 'BatHashtbl.S.t
  val filter_map_inplace :
    f:(key:BatHashtbl.S.key -> data:'-> 'a option) ->
    'BatHashtbl.S.t -> unit
  val fold :
    f:(key:BatHashtbl.S.key -> data:'-> '-> 'b) ->
    'BatHashtbl.S.t -> init:'-> 'b
  val exists :
    f:(key:BatHashtbl.S.key -> data:'-> bool) -> 'BatHashtbl.S.t -> bool
  val modify :
    key:BatHashtbl.S.key -> f:('-> 'a) -> 'BatHashtbl.S.t -> unit
  val modify_def :
    default:'->
    key:BatHashtbl.S.key -> f:('-> 'a) -> 'BatHashtbl.S.t -> unit
  val modify_opt :
    key:BatHashtbl.S.key ->
    f:('a option -> 'a option) -> 'BatHashtbl.S.t -> unit
  val merge :
    f:(BatHashtbl.S.key -> 'a option -> 'b option -> 'c option) ->
    left:'BatHashtbl.S.t -> right:'BatHashtbl.S.t -> 'BatHashtbl.S.t
  val merge_all :
    f:(BatHashtbl.S.key -> 'a list -> 'b list -> 'c list) ->
    left:'BatHashtbl.S.t -> right:'BatHashtbl.S.t -> 'BatHashtbl.S.t
end