getLHS()->hasChildren() && $this->getRHS()->hasChildren(); } /** @return RecursiveDualIterator (late binding) for the two inner * iterators current children. */ function getChildren(): RecursiveDualIterator { if (empty($this->ref)) { $this->ref = new ReflectionClass($this); } return $this->ref->newInstance( $this->getLHS()->getChildren(), $this->getRHS()->getChildren(), $this->getFlags()); } /** @return bool whether both inner iterators are valid, have same hasChildren() * state and identical current and key values or both are non valid. */ function areIdentical(): bool { return $this->getLHS()->hasChildren() === $this->getRHS()->hasChildren() && parent::areIdentical(); } /** @return bool whether both inner iterators are valid, have same hasChildren() * state and equal current and key values or both are invalid. */ function areEqual(): bool { return $this->getLHS()->hasChildren() === $this->getRHS()->hasChildren() && parent::areEqual(); } } ?>