An example of the kind of information that can be attached to the
nodes of the suffix tree: here, the sum of the length of all the
labels on the path from the root to the current node.
prepends the current coordinates (an object that contains the starting
index of the current added suffix) to the list of coordinates -
that in case two strings have the same suffix
finds the child of the current node that has branchStart as its first character;
this function will succeed in finding the child since the string S[j-1..i]
is already in the tree
returns true if there are more branches to be followed
if the current internal node was just inserted, it does not have
a suffix link attached to it; in this case, we have to remeber the string
that labels the branch leading to this node
(gamma will be followed down from the node at the end of the suffix link
starting form the parent of this node
returns the substring at the position "position", to the end of the
string, where position is counted
from the first symbol of the first token (cumulative position)
the position of the suffix associated with this leaf node
Note that the position is calculated relatively to the first char of the
first string added to the tree
preserves the internal node that was previously added to the tree,
as well as its parent
this is necesary when the chain of explicit extensions ends in the
current phase, so that we can restore the starting point for the next
phase