Tree is an UIComponent that supports data binding to a tree of data objects represented by
a TreeModel instance, which is the current value of this component itself (typically established via a
ValueExpression). During iterative processing over the nodes of tree in the tree model, the object for the
current node is exposed as a request attribute under the key specified by the var attribute. The node
itself is exposed as a request attribute under the key specified by the varNode attribute.

Only children of type TreeNode are allowed and processed by this component.

This component does not have a renderer since it does not render any markup by itself. This allows the developers to
have full control over the markup of the tree by declaring the appropriate JSF components or HTML elements in the
markup. Here is a basic usage example:

processTreeNode

If the current model node isn't a leaf (i.e. it has any children), then obtain the TreeNode associated
with the level of the current model node. If it isn't null, then process it according to the rules of the given
phase ID. This method is also called by TreeInsertChildren.process(FacesContext, PhaseId).

setCurrentModelNode

Sets the current node of the tree model. Its wrapped data will be set as request attribute associated with the
var attribute, if any. The node itself will also be set as request attribute associated with the
varNode attribute, if any.