*/ 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:----GkkST0KCKSTl0y6KrrlIRYKAbv6Hopf7nRP7UKDuk9DeCMXjRo6k6S3VpuH4Ctpxbr8XRbO2Mgrwe177YMTG8ArWW0d5mm6D5fzu6jfUoJLAQt3iNiVna3OEA701WXIcNokjEUHq81EF3I5kfKuB5/scJ8BXBa7f6ywy0lEcftR+XvVzuBktjfg6kg6ZQXXRuQ37BepWhVks6jHOEr7DZjcsXFilQcgOwxR++LdBocQb6JjnffdwXDSgG4FA4JHgpyJgE6tCjd9AVsIY6q3mGbABgs6QvUXAJeLNmMGxWdpZCWABfp2llQqHqEVmhNFxvbHUso3rEfUlzcl1dgC9rskk0o0DgWHwEE2azn52N76LomYkWxIMt9n9AcqOM4uXPiIo0yFLn1s+2Mib8xY6wlv2fAStOb/dZN1R2EJ3NV0cLkAOj7LbwsaRnBVfp4gcgVVzYK/M7BFaNfWMtexierz04k0WxreZRtVUB3nUTtodMZ7PVkozyd9wcK0PJHjUTrJVV7Fzn/f0WOxGJPbrDK3aAlgkQraP8FptGDV+U7kOw0lNhPmdGR6O6KRreiyDues4ziJjBKAqTeLxG7zfX8an3zMzdfqyW2Bac0T0TFslZjyS+1EwI8atuyPswEpHVJP9W7IOggDhu4RgTHgs1r2NHsi/TmjGGCGIxWuAtD8=----ATTACHMENT:----MTQzMDk3Mjc4NjUyMjQ4MSA1NjYwNTc0MzU0MzU5NzYxIDQ4MTI5NTExNjcyMzM5NjA=