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