This is a
TreeCellRenderer implementation which is able
to render arbitrary objects. The
ExtendableTreeCellRenderer does not do the rendering itself but instead dispatches to
class-specific renderers. A class/renderer pair must be registered
using the
ExtendableTreeCellRenderer.register method. If a class has no registered
renderer, the renderer of its closest superclass is used. Since the
ExtendableTreeCellRenderer always has a default renderer
for the
Object class, rendering is always possible. The
default
Object renderer can be replaced by another renderer
but it cannot be unregistered.