sig
  type ('a, 'b) t
  val empty : ('a, 'b) Avltree.t
  val invariant : ('a, 'b) Avltree.t -> compare:('-> '-> int) -> unit
  val add :
    ('a, 'b) Avltree.t ->
    compare:('-> '-> int) ->
    added:bool Pervasives.ref -> key:'-> data:'-> ('a, 'b) Avltree.t
  val find :
    ('a, 'b) Avltree.t -> compare:('-> '-> int) -> '-> 'b option
  val mem : ('a, 'b) Avltree.t -> compare:('-> '-> int) -> '-> bool
  val remove :
    ('a, 'b) Avltree.t ->
    removed:bool Pervasives.ref ->
    compare:('-> '-> int) -> '-> ('a, 'b) Avltree.t
  val fold :
    ('a, 'b) Avltree.t -> init:'-> f:(key:'-> data:'-> '-> 'c) -> 'c
  val iter : ('a, 'b) Avltree.t -> f:(key:'-> data:'-> unit) -> unit
end