protected function getAncestorTypes(IType $type)
{
$ancestorTypes = [$type->getIdentifier() => $type];
if (!$type->hasParentType()) {
return $ancestorTypes;
}
if ($type instanceof ICompositeType) {
foreach ($type->getComposedTypes() as $composedType) {
$ancestorTypes += $this->getAncestorTypes($composedType);
}
} else {
$parentType = $type->getParentType();
$ancestorTypes[$parentType->getIdentifier()] = $parentType;
$ancestorTypes += $this->getAncestorTypes($parentType);
}
return $ancestorTypes;
}