Most Renderer instances have the required "render" method and also a "toString" method. Since "render" can be complicated it is tempting to create a subclass and just change the "toString" method to do something special with the text (like using something besides "Object.toString()" to get the proper text). But, many of the renderers don't call the "toString(Object)" method from "render", but instead duplicate the logic in there. This renders the subclass approach ineffective. And there is no particular reason for having the "toString" method except for it to be used in "render".