public function next($offset = 1)
{
while (($valid = $this->valid()) === true && $offset > 0) {
$currentValue = current($this->values);
$currentValue->next();
while ($currentValue->valid() === false && $valid === true) {
next($this->values);
if (($valid = $this->valid()) === true) {
$currentValue = current($this->values);
$currentValue->rewind();
}
}
if ($valid === true) {
while (in_array($this->current(), $this->skipedValues) === true && $this->valid() === true) {
$this->next();
}
}
$this->key++;
$offset--;
}
return $this;
}