protected function calculate()
    {
        if (isset($this->results) || (0 === $this->models->length())) {
            return;
        }

        if (!$this->getSortingProperty()) {
            throw new \RuntimeException('No sorting property defined for ' . $this->models->get(0)->getProviderName());
        }

        $this->results      = clone $this->models;
        $this->siblingsCopy = clone $this->siblings;

        $this->scanToDesiredPosition();
        $this->updateSorting();
    }