A text fragment can be a text node or an immutable list of text nodes.
The text fragment is always balanced.
interface text fragment
extends deeply immutable data
extends stringable