src/Peach/Markup/NodeList.php
private function checkOwner($var)
    {
        if (is_array($var)) {
            foreach ($var as $i) {
                $this->checkOwner($i);
            }
            return;
        }
        
        if ($var instanceof Container) {
            $this->checkOwner($var->getChildNodes());
        }
        if ($var === $this->owner) {
            throw new \InvalidArgumentException("Tree-loop detected.");
        }
    }
private function checkOwner($var)
    {
        if (is_array($var)) {
            foreach ($var as $i) {
                $this->checkOwner($i);
            }
            return;
        }
        
        if ($var instanceof Container) {
            $this->checkOwner($var->getChildNodes());
        }
        if ($var === $this->owner) {
            throw new \InvalidArgumentException("Tree-loop detected.");
        }
    }
この NodeList に子ノードを追加する際に,
親子関係が無限ループしないかどうか検査します.
引数がこの NodeList のオーナーだった場合に InvalidArgumentException をスローします.
引数が配列もしくは {@link Container} だった場合は,
その子ノードの一覧について再帰的に検査します.

@param  mixed $var 検査対象
@throws \InvalidArgumentException 検査対象にこの NodeList のオーナーが含まれていた場合