Остановились на том что следует реализовывать собственную иерархию.
Следовательно надо каким то чудом получить по каждому элементу его родителя уровня №0?
(4) уровней может быть сколько угодно! нужно универсальное решение...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший