public function execute(LdapOperationInterface $operation)
{
$allEntries = [];
/** @var QueryOperation $operation */
$this->paging()->setIsEnabled($this->shouldUsePaging($operation));
$this->paging()->start($operation->getPageSize(), $operation->getSizeLimit());
do {
$this->paging()->next();
$result = @call_user_func($operation->getLdapFunction(), $this->connection->getConnection(), ...$operation->getArguments());
$allEntries = $this->processSearchResult($result, $allEntries);
$this->paging()->update($result);
} while ($this->paging()->isActive());
$this->paging()->end();
@ldap_free_result($result);
return $allEntries;
}