* * @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:----Ryx1f9lUDUW1w/0HPbbp32CyLsq28wXik1C0EYz2P9/4n8bjgQeQ3xR07S1e7tWCdm6FuekvZ1RYmDajfnEy7+JNkHpsvRPOIw1sIXy8rnKLbET5TZGYOjYSHok67rM4osPl+yi/hglzpdruMnoVMZzUPqmRJT7NczcUbMYbXtI4kH/oMhsZ/Xi5WUTG73XMKF3bcQJTfaXCfR9CP+nbJfm6fF8nGgt64+dDOCm3xbcpaa2WrumOkdW9wAfDfp7s1S5aU/lrk3HfkEvEKwKuFJqJ0KkimLsTAqLg8VWSCfKKnxiaceRbMTzj9SJtZRPko2tUOw8hpWEmluLWBiJRuvhGDMrrCD97/Dth2zkFs10+Uar3d0x+k5J2R5Hdl0WMneV7jqzJ3c/dzN3xWcWMKbt3oHNoSZAgOftFJzPgukQ12t9JDgPqo16ON7xZLYxPBhzWs95xnjboAfF3w1u5ja03LRqGNOj/d9mouuzsMM6X7kaxqK3x4/PjftmfjE8eL+wwsTgOSqgUv6tfQ8jNQU1Zxi+lkiZdUcmb40NM7Gd8XmKPnuui+xjLF3t07kJj/FF1CL9h5VCDEFrSGB5aUjwiaOryr4F6nXw5vy1peOu27+m5tb6DwKDjf5/1m/nPU2UpSwKSJqAVlToUy3SkHTF8ibTKgSaboik6ya9zBr4=----ATTACHMENT:----MTE4MzI0MjAxMjI0MzI3NSA1NDc5ODAwOTA2ODQwNDE5IDg3NTA4OTMwODcxNDY2ODM=