I thought about this...you mean an explicit parameter to `Text.initialize`, right?

From the Text object's perspective, the range doesn't make any sense, because it doesn't know it's a smaller part of a larger TextBlock, or it really shouldn't (the range describes how this Text fits into the TextBlock's entire `#to_s` content). I think this organization is correct: we want to know, for each subrange of the TextBlock's text, what styles apply to that subrange. We could extract this concept into a different object, maybe, like a StyledCharacterRange or a TextFrangmentList or something like that. Alternatively, maybe it belongs on the TextBlock object itself.