Just like Gui, I serve as a base for complex objects which expose
an individual protocol but internally use a Blox widget for
creating their user interface. Unlike Gui, however, the
instances of my subclasses understand the standard widget protocol.
Just override my newPrimitive method to return another widget,
and you'll get a class which interacts with the user like that
widget (a list box, a text box, or even a label) but exposes a
different protocol.