Belt_internalAVLset
type t('value) = option(node('value));
type cmp('a, 'b) = Belt_Id.cmp('a, 'b);
let singleton: 'a => t('a);
let minimum: t('a) => option('a);
let minUndefined: t('a) => Js.undefined('a);
let maximum: t('a) => option('a);
let maxUndefined: t('a) => Js.undefined('a);
let removeMinAuxWithRef: node('a) => Bs_stdlib_mini.ref('a) => t('a);
let isEmpty: t('a) => bool;
let forEachU: t('a) => Js.Fn.arity1(('a => unit)) => unit;
let forEach: t('a) => ('a => unit) => unit;
let reduceU: t('a) => 'b => Js.Fn.arity2(('b => 'a => 'b)) => 'b;
let reduce: t('a) => 'b => ('b => 'a => 'b) => 'b;
let everyU: t('a) => Js.Fn.arity1(('a => bool)) => bool;
let every: t('a) => ('a => bool) => bool;
let someU: t('a) => Js.Fn.arity1(('a => bool)) => bool;
let some: t('a) => ('a => bool) => bool;
let keepCopyU: t('a) => Js.Fn.arity1(('a => bool)) => t('a);
let partitionCopyU: t('a) => Js.Fn.arity1(('a => bool)) => (t('a), t('a));
let lengthNode: node('a) => int;
let size: t('a) => int;
let toList: t('a) => list('a);
let checkInvariantInternal: t(_) => unit;
raise when invariant is not held
let fillArray: node('a) => int => array('a) => int;
let toArray: t('a) => array('a);
let fromSortedArrayAux: array('a) => int => int => t('a);
let fromSortedArrayRevAux: array('a) => int => int => t('a);
let fromSortedArrayUnsafe: array('a) => t('a);
let getUndefined: t('a) => 'a => cmp:cmp('a, 'b) => Js.undefined('a);