public function load(O\Expression $requestExpression)
{
if ($this->queryResultCollection === null) {
return $this->loadRequestExpression($requestExpression);
}
if ($this->queryResultCollection->tryComputeResults($requestExpression, $results)) {
return $results;
}
$queryExpression = $this->queryResultCollection->optimizeQuery($requestExpression);
$results = $this->loadRequestExpression($queryExpression);
$this->queryResultCollection->saveResults($queryExpression, $results);
return $this->queryResultCollection->computeResults($requestExpression);
}