public function current()
    {
        $row = parent::current();

        if (!$this->_validValues) {
            return $row;
        }

        $pointer =& $row;
        foreach ($this->_path as $step) {
            if (!isset($pointer[$step])) {
                return $row;
            }
            $pointer =& $pointer[$step];
        }

        $pointer[$this->_target] = $this->_values->current();

        return $row;
    }