public function slice(ExecutionContext $execution, $metadata) { $offset = $execution->getOffset(); $limit = $execution->getLimit(); if (method_exists($this->processor, 'slice')) { return $this->processor->slice($offset, $limit); } $this->seek($offset); $data = []; for ($i = 0; $i < $limit && $this->valid(); $i++) { $data[] = $this->extract($this->createContext($execution, $metadata)); } return $data; }