protected function doShift($length = 1)
    {
        $parameters = [];

        if (0 > $length) {
            $parameters[] = ['start' => \abs($length), 'end' => null];
            $parameters[] = ['start' => 0, 'end' => \abs($length)];
        } else {
            $parameters[] = ['start' => -1 * $length, 'end' => null];
            $parameters[] = ['start' => 0, 'end' => $this->datasetCount + $length * -1];
        }

        $this->current = \array_merge(
            \array_slice($this->current, $parameters[0]['start'], $parameters[0]['end']),
            \array_slice($this->current, $parameters[1]['start'], $parameters[1]['end'])
        );
    }