public function generate()
{
$template = $this->templateFactory->createForType('tree');
$classes = $this->parserStorage->getClasses();
foreach ($classes as $className => $reflection) {
if ($this->canBeProcessed($reflection)) {
$this->addToTreeByReflection($reflection);
}
}
$this->sortTreeStorageElements();
$template->setParameters(['classTree' => new Tree($this->treeStorage[ElementsInterface::CLASSES], $classes), 'interfaceTree' => new Tree($this->treeStorage[ElementsInterface::INTERFACES], $classes), 'traitTree' => new Tree($this->treeStorage[ElementsInterface::TRAITS], $classes), 'exceptionTree' => new Tree($this->treeStorage[ElementsInterface::EXCEPTIONS], $classes)]);
$template->save();
}