Map_gen
let cardinal: t('a, 'b) => int;
let bindings: t('a, 'b) => list(('a, 'b));
let fill_array_with_f:
t('a, 'b) =>
int =>
array('c) =>
('a => 'b => 'c) =>
int;
let fill_array_aux: t('a, 'b) => int => array(('a, 'b)) => int;
let to_sorted_array: t('key, 'a) => array(('key, 'a));
let to_sorted_array_with_f: t('a, 'b) => ('a => 'b => 'c) => array('c);
let keys: t('a, 'b) => list('a);
let height: t('a, 'b) => int;
let singleton: 'a => 'b => t('a, 'b);
let unsafe_two_elements: 'a => 'b => 'a => 'b => t('a, 'b);
smaller comes first
let empty: t('a, 'b);
let is_empty: t('a, 'b) => bool;
let iter: t('a, 'b) => ('a => 'b => unit) => unit;
let fold: t('a, 'b) => 'c => ('a => 'b => 'c => 'c) => 'c;
let for_all: t('a, 'b) => ('a => 'b => bool) => bool;
let exists: t('a, 'b) => ('a => 'b => bool) => bool;
module type S = { ... };