sig   type strid = int   type t   val create : unit -> Suffix_tree.T.t   val size : Suffix_tree.T.t -> int   val add : Suffix_tree.T.t -> string -> Suffix_tree.T.strid   val remove : Suffix_tree.T.t -> Suffix_tree.T.strid -> unit   val get : Suffix_tree.T.t -> Suffix_tree.T.strid -> string   val find : Suffix_tree.T.t -> string -> Suffix_tree.T.strid   val fold :     (Suffix_tree.T.strid -> string -> '-> 'a) ->     Suffix_tree.T.t -> '-> 'a   type node   val root : Suffix_tree.T.t -> Suffix_tree.T.node   val is_leaf : Suffix_tree.T.t -> Suffix_tree.T.node -> bool   val label : Suffix_tree.T.t -> Suffix_tree.T.node -> string   val length : Suffix_tree.T.t -> Suffix_tree.T.node -> int   val path : Suffix_tree.T.t -> Suffix_tree.T.node -> string   val height : Suffix_tree.T.t -> Suffix_tree.T.node -> int   val ext :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.strid Lset.t   val children :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node Lset.t   val parent :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node option   val succ :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node option   val preds :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node Lset.t   val suffix :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.strid * int   val find_node : Suffix_tree.T.t -> string -> Suffix_tree.T.node   val fold_tree :     Suffix_tree.T.t ->     ('-> Suffix_tree.T.node -> bool) ->     ('-> Suffix_tree.T.node -> 'h) ->     ('s list -> '-> Suffix_tree.T.node -> 's) -> '-> 's   val path_restrictions :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node list   val path_extensions :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node list   val is_maximal : Suffix_tree.T.t -> Suffix_tree.T.node -> bool   val set_visible :     Suffix_tree.T.t -> Suffix_tree.T.node -> int * int -> unit   val max_restrictions :     Suffix_tree.T.t -> Suffix_tree.T.node -> Suffix_tree.T.node list   val max_extensions :     Suffix_tree.T.t ->     Suffix_tree.T.node option ->     Suffix_tree.T.node list * Suffix_tree.T.strid list   val string_restrictions :     Suffix_tree.T.t -> Suffix_tree.T.strid -> Suffix_tree.T.node list   type factor = Suffix_tree.T.node * string * Suffix_tree.T.node   val find_factor : Suffix_tree.T.t -> string -> Suffix_tree.T.factor   val suffixes :     Suffix_tree.T.t ->     Suffix_tree.T.factor -> (Suffix_tree.T.strid * int) list   val strings :     Suffix_tree.T.t -> Suffix_tree.T.factor -> Suffix_tree.T.strid Lset.t   type tree =       Node of string * int * int list * Suffix_tree.T.tree list     | Leaf of string * (Suffix_tree.T.strid * int)   val tree : Suffix_tree.T.t -> Suffix_tree.T.tree end