module type S = sig .. end
type key;
type t('a);
let create: int => t('a);
let clear: t('a) => unit;
let reset: t('a) => unit;
let copy: t('a) => t('a);
let add: (t('a), ~key: key, ~data: 'a) => unit;
let remove: (t('a), key) => unit;
let find: (t('a), key) => 'a;
let find_all: (t('a), key) => list('a);
let replace: (t('a), ~key: key, ~data: 'a) => unit;
let mem: (t('a), key) => bool;
let iter: (~f: (~key: key, ~data: 'a) => unit, t('a)) => unit;
let fold: (~f: (~key: key, ~data: 'a, 'b) => 'b, t('a), ~init: 'b) => 'b;
let length: t('a) => int;
let stats: t('a) => MoreLabels.Hashtbl.statistics;