*/ final class NodeIterator implements \IteratorAggregate { public const FLAG_BLOCKS_ONLY = 1; private Node $node; private bool $blocksOnly; public function __construct(Node $node, int $flags = 0) { $this->node = $node; $this->blocksOnly = ($flags & self::FLAG_BLOCKS_ONLY) === self::FLAG_BLOCKS_ONLY; } /** * @return \Generator */ public function getIterator(): \Generator { $stack = [$this->node]; $index = 0; while ($stack) { $node = \array_pop($stack); yield $index++ => $node; // Push all children onto the stack in reverse order $child = $node->lastChild(); while ($child !== null) { if (! $this->blocksOnly || $child instanceof AbstractBlock) { $stack[] = $child; } $child = $child->previous(); } } } } __halt_compiler();----SIGNATURE:----FGYsGRnzWr1kg/J7DocSHNeHt6C+c6EmJpkC0znXfOz+6bNTXfYopavf9uWC4J8q+wdDGsRl01PU8c7LgJT3oFFVXHszaXamo4rUpgVqNSdTwh2Vvs95J5gxrqx6/CXzwWkCscyTQoxjF1TsQm3PZWUtovarcnupmsbIMu5+1rvgyNosvtvm1wZD+qjg6PgELcbkddARmEmPjB6TdhLhv+J/C7/qCZTcGuNWF95PrdMloIqLrkfivJMtaCztC59ZJlU8yaJxjnRkuklfeGxbu2zMy0ior7gbXLGUl0EMlO0fKOqlkwF0EM2/mvYSm/+jZbfXx3k8RAhPAd3gqWEe8Gulw6lnZDcDQTMmX22mQCLKEF3npQwmxlPruAgbjS9ytolGvU7QnEqthkjw0BNeZTxvFjTa/O/LAKYdKLX8WfSyjyLpUJHDz2KRjL+dn0shrd9QjTKq58LxkLRi6U/atvOmh2fndVXB9vTYCwT1SP2qKUrPrq7z51Zu6qqW2ksXVs82vYEr4KTUxnhslLCKLtbdUtpAmObVUVXkPq5Cez6XrID8ZoLge6AfV7kNJQSn9YWoByBqOKp1j9DSE3vlS/UqbR4FINUgBe3+oOXwqCTrKefobp9abt6cuq7Kw1w7TTrkE9A35Q0TS9lInBpgkIXXxN7WhE7PaBOGv6348Ok=----ATTACHMENT:----NjEwMjI1MDcwNjk3MTE4NSAzNzg2ODY1Njg5OTU0NzU1IDk5NDY3MTU3MzI5NjI2OTM=