public function getIterator() { $callback = $this->callback; foreach ($this->source as $key => $value) { if ($callback($value)) { (yield $key => $value); } } }