* * @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:----hV4SAZ0egRS255+Rk8jj2ZTx1NrBgcSp1ttzur5Cie8ymSkvz3RAGBlc6Xvc74inGbZayeU6fymyA1/d1w3p3zp/v0GYLMpK+NsNSAdjU3TIo8BsSwPB3DIv1mpOCIjDtgZAXSOpxZPr1DSp+YckLYQR/W9i6t+EfYPB3KHhl4UprycCMjRNcIj6P78LUffzEQJVuDTPvVe01+kFu8rWIdd9XqpRcrckVe7dP95izep1tjS04bsbrDoWvV3GgyMG/FZIgAVBxeaSI4bhct4bSjj8ygxIpmSHbHQNlE0lmTPFFrSAVe4y77LFAcSHdcyT4Z49zqItbr08ERxe30RiSQCvu6IScmRhzQH80fg6N8WGRpKgvPnhDnivue8wgvks0mcpTICgWruPOrLHnh/IPpG0VR/YDrLKJcvZx8ev1ltwB/eVsoJ30UnIh2s7uAe4WEAilBJDGsziGHsWzn1+Orpm+wc6NeqKRhM9u0lgjxoVNKJJqq5rAAZVkScM+0u0AEjUndGTCDSd9KgObebDvU6Igd03fhNEJW26h5dybWYKExZcYJ8nXBC5dOjpw1TGJ9ACfHR9a3p8mYDFBHtUWrDmOkwEC7ZFoFddie7ditawuhDEPVpzh99grxa59Ufr1qfAZTrAOzxm2l4lnVUuAfExJZG+tk5d3SmCS6E/o2c=----ATTACHMENT:----MTEwNzg4ODQwODQ3MTUyNCA5MDI0OTU3Njg4NDg4OTkzIDUzNTM1NjIzMjgzMTkzNjM=