function &functions()
{
$functions = array();
$packages = $this->packages();
// not by reference so as not to move the internal array pointer
foreach ($packages as $name => $package) {
$packageFunctions = $this->_packages[$name]->functions();
// not by reference so as not to move the internal array pointer
if ($packageFunctions) {
foreach ($packageFunctions as $key => $pack) {
$functions[$name . '.' . $key] =& $packageFunctions[$key];
}
}
}
return $functions;
}