sig
  type +'a tree
  val empty : 'BatAvlTree.tree
  val is_empty : 'BatAvlTree.tree -> bool
  val make_tree :
    'BatAvlTree.tree -> '-> 'BatAvlTree.tree -> 'BatAvlTree.tree
  val height : 'BatAvlTree.tree -> int
  val left_branch : 'BatAvlTree.tree -> 'BatAvlTree.tree
  val right_branch : 'BatAvlTree.tree -> 'BatAvlTree.tree
  val root : 'BatAvlTree.tree -> 'a
  val singleton_tree : '-> 'BatAvlTree.tree
  val split_leftmost : 'BatAvlTree.tree -> 'a * 'BatAvlTree.tree
  val split_rightmost : 'BatAvlTree.tree -> 'a * 'BatAvlTree.tree
  val concat : 'BatAvlTree.tree -> 'BatAvlTree.tree -> 'BatAvlTree.tree
  val iter : ('-> unit) -> 'BatAvlTree.tree -> unit
  val fold : ('-> '-> 'b) -> 'BatAvlTree.tree -> '-> 'b
  val enum : 'BatAvlTree.tree -> 'BatEnum.t
end