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