code: 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.");
          }
      }
docs: この NodeList に子ノードを追加する際に,
  親子関係が無限ループしないかどうか検査します.
  引数がこの NodeList のオーナーだった場合に InvalidArgumentException をスローします.
  引数が配列もしくは {@link Container} だった場合は,
  その子ノードの一覧について再帰的に検査します.
  
  @param  mixed $var 検査対象
  @throws \InvalidArgumentException 検査対象にこの NodeList のオーナーが含まれていた場合