private function processTraitUse(AbstractUnitObject $unit, TraitUseObject $use, AbstractUnitObject $trait)
{
$this->project->registerForSaving($unit);
$this->project->registerForSaving($trait);
$trait->addUser($unit);
$unit->importTraitExports($trait, $use);
if ($trait->hasExtends()) {
foreach ($trait->getExtends() as $name) {
try {
$extendedUnit = $this->getUnitByName($name);
$this->processExtends($unit, $extendedUnit, $extendedUnit);
} catch (ProjectException $e) {
$this->addUnresolved($unit, $trait->getExtends());
}
}
}
if ($trait->usesTraits()) {
foreach ($trait->getUsedTraits() as $traitName) {
try {
$traitUnit = $this->getUnitByName($traitName);
$this->processTraitUse($unit, $trait->getTraitUse($traitName), $traitUnit);
} catch (ProjectException $e) {
$this->addUnresolved($unit, $traitName);
}
}
}
}