This is an implementation of the JDK 1.4 CharSequence interface: it implements
a CharSequence as a list of arrays of characters (the individual arrays are known
as segments). The segments have a fixed size of 65536 characters.
This is more efficient than a buffer backed by a contiguous array of characters
in cases where the size is likely to grow very large, and where substring operations
are rare. As used within the TinyTree, extraction of the string value of a node
requires character copying only in the case where the value crosses segment
Returns a new character sequence that is a subsequence of this sequence.
The subsequence starts with the character at the specified index and
ends with the character at index end - 1. The length of the
returned sequence is end - start, so if start == end
then an empty sequence is returned.