In the process I discovered the horrible fact that Text.x allocates a new Text. And it gets called (just once, thank goodness) on every single frame.
I've only tested side A so far, and included a statement of how I want side B to behave.