Component and Renderer Classes
While the Meta class is all about static declarations, the Component and Renderer classes are all about coding behaviours. The JSF convention is to put all or most behaviour into the Renderer. For example, all decoding and rendering should go into the Renderer. In theory, the Component class should be empty. But, in practice, there are certain methods which are frequently necessary to be overridden in the Component class.
In a custom container component, it's typically necessary to override the decode, validation, and model updating methods that are responsible for recursing into the component hierarchy. If a component has custom events and MethodExpressions, it's typically necessary to override the event broadcasting and queueing methods.