public function slice($start, $end = NULL)
{
$result = $this->spawn();
if ($end === NULL) {
$result->push(array_slice($this->_nodes, $start));
} elseif ($end < 0) {
$result->push(array_slice($this->_nodes, $start, $end));
} elseif ($end > $start) {
$result->push(array_slice($this->_nodes, $start, $end - $start));
} else {
$result->push(array_slice($this->_nodes, $end, $start - $end));
}
return $result;
}