public function map(callable $function)
{
$result = array();
foreach ($this->_nodes as $index => $node) {
$mapped = $function($node, $index);
if ($mapped === NULL) {
continue;
} elseif ($mapped instanceof \Traversable || is_array($mapped)) {
foreach ($mapped as $element) {
if ($element !== NULL) {
$result[] = $element;
}
}
} else {
$result[] = $mapped;
}
}
return $result;
}