final void crawlFromRoot(FormationComposite root) { for (FormationComponent component : root.getFormations()) { if (component.isLeaf()) { this.onLeafFound((FormationLeaf) component); } else { FormationComposite composite = (FormationComposite) component; this.onCompositeFound(composite); this.crawlFromRoot(composite); } } }