/** * Register the given set of requirements * * @param RequirementSet $set The set to register * * @return RequirementSet */ public function merge(RequirementSet $set) { if ($this->getMode() === $set->getMode() && $this->isOptional() === $set->isOptional()) { foreach ($set->getAll() as $requirement) { if ($requirement instanceof static) { $this->merge($requirement); } else { $this->add($requirement); } } } else { $this->requirements[] = $set; } return $this; }