code: public function next()
      {
          ++$this->sumKey;
          $nested = $this->getNested();
  
          foreach ($nested as $variation) {
              if (!$variation->valid()) {
                  continue;
              }
              $variation->next();
  
              if (!$variation->valid()) {
                  continue;
              }
              $this->reset();
  
              return;
          }
          $this->pushForward();
  
          if (!$this->isValid()) {
              return;
          }
          $this->reset(false);
      }
docs: {@inheritdoc}