code: function getElements(parts) {
    if (!parts.length) return []
  
    const [paired, children, unpaired, after] = parts.slice(0, 4)
  
    return [[parseInt(paired || unpaired), children || "", after]].concat(
      getElements(parts.slice(4, parts.length))
    )
  }
docs: /*
  `getElements` - return array of element indexes and element childrens
  
  `parts` is array of [pairedIndex, children, unpairedIndex, textAfter, ...]
  where:
  - `pairedIndex` is index of paired element (undef for unpaired)
  - `children` are children of paired element (undef for unpaired)
  - `unpairedIndex` is index of unpaired element (undef for paired)
  - `textAfter` is string after all elements (empty string, if there's nothing)
  
  `parts` length is always multiply of 4
  
  Returns: Array<[elementIndex, children, after]>