Would be great to see different methods for searching nodes in TreeModel. Like:
/**
* Searches for the first node that contains a specified object as its data.
*
* @param data the data to find its enclosing tree node
* @return the first tree node that contains the specified data or {@code null} if there are no nodes that contain such data
* @see org.zkoss.zul.TreeNode#getData()
*/
public TreeNode<E> find(E data);
And other methods like this one, it's very handy to have such methods directly in the TreeModel.