public function __construct(AbstractQuery $query)
{
$this->result = $query->setMaxResults($query->getMaxResults() + 1)->getResult();
$this->prevPageOffset = $query->getFirstResult() ? max(0, $query->getFirstResult() - $query->getMaxResults() + 1) : null;
$this->nextPageOffset = count($this->result) === $query->getMaxResults() ? $query->getMaxResults() + $query->getFirstResult() - 1 : null;
$this->currentPageOffset = $query->getFirstResult();
if ($this->nextPageOffset) {
array_pop($this->result);
}
}