public function registerChild(NodeInterface $node, $overwrite = false, $prepend = false) { $this->registerAdopters(); if ($node->getParent() !== $this) { throw new \RuntimeException('Nodes being registered must return this node from their getParentNode method.'); } $name = $node->getName(); if (!$overwrite && isset($this->childNodes[$name])) { throw new \RuntimeException(sprintf('Node name %s is already registered.', $name)); } if ($prepend) { $this->childNodes = array_merge([$name => null], $this->getChildren(), [$name => $node]); } else { $this->childNodes[$name] = $node; } }