public function next()
 {
     if (!$this->valid()) {
         return;
     }
     $lastOffset = $this->key();
     do {
         while ($this->topicIdIterator->valid()) {
             $topicId = $this->topicIdIterator->current();
             $this->topicIdIterator->next();
             // this topic id has been seen before.
             if ($topicId <= $lastOffset) {
                 continue;
             }
             // hidden and deleted threads come back as null
             $topic = $this->importSource->getTopic($topicId);
             if ($topic === null) {
                 continue;
             }
             $this->current = $topicId;
             $this->currentTopic = $topic;
             return;
         }
     } while ($this->loadMore());
     // nothing found, nothing more to load
     $this->current = false;
 }
 public function getObjectKey()
 {
     return $this->source->getObjectKey('header_for', $this->title);
 }