*/ private array $nodes; /** * @no-named-arguments */ public function __construct(Node ...$nodes) { $this->nodes = $nodes; } public function compile(Compiler $compiler): Compiler { $nodes = $this->nodes; while ($node = array_shift($nodes)) { $compiler = $compiler->compile($node); if ($nodes !== []) { $compiler = $compiler->write(' || '); } } return $compiler; } }