public function enqueue(Animal $animal) { $animal->setIndex($this->index++); if ($animal instanceof Dog) { $this->dogs->add($animal); } else { if ($animal instanceof Cat) { $this->cats->add($animal); } else { throw new InvalidArgumentException('Unknown animal type: ' + get_class($animal)); } } }