sig
  type 'data t
  val empty : 'data Crit_bit.t
  val find : 'data Crit_bit.t -> string -> 'data option
  val add : 'data Crit_bit.t -> key:string -> data:'data -> 'data Crit_bit.t
  val remove : 'data Crit_bit.t -> string -> 'data Crit_bit.t
  val iter : 'data Crit_bit.t -> f:(key:string -> data:'data -> unit) -> unit
  val map : 'data Crit_bit.t -> f:('data -> 'b) -> 'Crit_bit.t
  val fold :
    'data Crit_bit.t ->
    init:'-> f:(key:string -> data:'data -> '-> 'b) -> 'b
end