public function getReferenceCount(CodeBase $code_base) : int
{
$count = parent::getReferenceCount($code_base);
// A function that maps a list of elements to the
// total reference count for all elements
$list_count = function (array $list) use($code_base) {
return array_reduce($list, function (int $count, AddressableElement $element) use($code_base) {
return $count + $element->getReferenceCount($code_base);
}, 0);
};
// Sum up counts for all dependent elements
$count += $list_count($this->getPropertyList($code_base));
$count += $list_count($this->getMethodMap($code_base));
$count += $list_count($this->getConstantMap($code_base));
return $count;
}