public function getRecursiveIterator($max_level = 0, $parent = 0)
    {
        if($parent > 0 && !$this->__nodes->find($parent)) {
            throw new \OutOfBoundsException('Parent does not exist');
        }

        //If the parent doesn't have any children create an empty rowset
        if(isset($this->__children[$parent])) {
            $config = array('data' => $this->__children[$parent]);
        } else {
            $config = array();
        }

        $iterator = new DatabaseIteratorRecursive($this->getTable()->createRowset($config), $max_level);
        return $iterator;
    }