protected function traverseNode(PHPParser_Node $node)
{
$node = $node;
foreach ($node->getSubNodeNames() as $name) {
$subNode =& $node->{$name};
if (is_array($subNode)) {
$subNode = $this->traverseArray($subNode);
} elseif ($subNode instanceof PHPParser_Node) {
foreach ($this->visitors as $visitor) {
if (null !== ($return = $visitor->enterNode($subNode))) {
$subNode = $return;
}
}
$subNode = $this->traverseNode($subNode);
foreach ($this->visitors as $visitor) {
if (null !== ($return = $visitor->leaveNode($subNode))) {
$subNode = $return;
}
}
}
}
return $node;
}