sig
  type 'a tree = { content : 'a; children : 'a AXOLang.LTree.tree list; }
  exception Empty_tree
  val node : 'a -> 'a AXOLang.LTree.tree list -> 'a AXOLang.LTree.tree
  val get_content : 'a AXOLang.LTree.tree -> 'a
  val get_children : 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree list
  val iter :
    ('a -> 'a AXOLang.LTree.tree list -> 'b) -> 'a AXOLang.LTree.tree -> unit
  val iteri :
    ('a -> 'a AXOLang.LTree.tree list -> int -> 'b) ->
    'a AXOLang.LTree.tree -> unit
  val find :
    ('a -> 'a AXOLang.LTree.tree list -> bool) ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val get_parent :
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val get_depth : 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> int
  val map :
    ('a -> 'a AXOLang.LTree.tree list -> 'b * 'a AXOLang.LTree.tree list) ->
    'a AXOLang.LTree.tree -> 'b AXOLang.LTree.tree
  val filter :
    ('a -> 'a AXOLang.LTree.tree list -> bool) ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val insert :
    ('a -> 'a AXOLang.LTree.tree list -> bool) ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val insert_at :
    'a AXOLang.LTree.tree ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val move :
    'a AXOLang.LTree.tree ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val to_list : 'a AXOLang.LTree.tree -> 'a list
  val is_in_lineage : 'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> bool
  val sort :
    ?comp:('a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree -> int) ->
    'a AXOLang.LTree.tree -> 'a AXOLang.LTree.tree
  val fold : ('a -> 'b -> 'a) -> 'a -> 'b AXOLang.LTree.tree -> 'a
end