* * @psalm-readonly-allow-private-mutation */ private array $listItemStack = []; public function __construct(TableOfContents $toc) { $this->toc = $toc; } public function addItem(int $level, ListItem $listItemToAdd): void { $previousLevel = \array_key_last($this->listItemStack); // Pop the stack if we're too deep while ($previousLevel !== null && $level < $previousLevel) { \array_pop($this->listItemStack); $previousLevel = \array_key_last($this->listItemStack); } $lastListItem = \end($this->listItemStack); // Need to go one level deeper? Add that level if ($lastListItem !== false && $level > $previousLevel) { $targetListBlock = new ListBlock($lastListItem->getListData()); $targetListBlock->setStartLine($listItemToAdd->getStartLine()); $targetListBlock->setEndLine($listItemToAdd->getEndLine()); $lastListItem->appendChild($targetListBlock); // Otherwise we're at the right level // If there's no stack we're adding this item directly to the TOC element } elseif ($lastListItem === false) { $targetListBlock = $this->toc; // Otherwise add it to the last list item } else { $targetListBlock = $lastListItem->parent(); } $targetListBlock->appendChild($listItemToAdd); $this->listItemStack[$level] = $listItemToAdd; } } __halt_compiler();----SIGNATURE:----nncHcduk3NPBFZuWIAEYbbZoFPweVgsx6w7BsoFLmJ1PilanuMeRswsZXgNHmli5IzfSqYgdrm1ceF8HrLp0llVCKhOH2S0BtyS76g2zzaa1YhkgjL9s38BfFYGSwVDzizteSEtl5i7mDWxMTqkDHwq38LvVa0SzU0rZ1khuUzZWwGLfyHsfrCzlOugl9Wp/+quw0ytlB9rwEAP/UiazXT6Rmk4Fi9zr/8+uHOqUiBU4xipek+GqfwuLgnWzoVLbjYCiAzQDqxenKLEYzVPhnvrFIN6C8yAQ2j7W9OXVyqunsGzMlWFM+7agoiai4aHwXs9VU3i3wV8ZuFOwaZqv/Ws6ltHjvt4vcutC6Q91WUjV2je91ZU/bYOOmbgMjM1HdbEV/nfgymMDW8W6773gBZJ2FKmhLGndsrH56Fcz+fz/DnyORW1SD/vd33FeB8COp5lXdNjUn2Q3cjskma9HNxMW41oD1mDbWyTCy+NO3VsWeRPhDiI2juM5ZirFEZwpyuOsoLOTSIGFkm5jk+z0+1Ctm4SyjX1hRyoX2gF5ZK4Z6d9U5mMl1Pc9YJQ5JW5w2zTPR+wP48F0i9m4fJ/6c9uIWT1JgofGxrN1oBn6yFQczpyOppuEAQoiJDeSEWaNAZjyMHgAt2CyFhvXYxtokqwre0lMcjRMdn3IjgvWOQc=----ATTACHMENT:----NjM3OTgyNDExMTI5NjcyOSAyOTk0ODY1ODgzNDI1NTU5IDY3NTgxNTU2MTkxMDQyNjg=