CS>selectRange() снимает предыдущее выделение и ставит новое на всех элементах в [optFirst ... optLast] range.
CS>Если optFirst и optLast оба null то просто снимает выдкление.
CS>Вроде как просто, нет?
Андрей, проблема лишь в том, что я не могу получить этот "// linear list of all option's: " для своего случая.
Например как его получить, когда элементы подлежащие выделению лежат на разных уровнях:

Ваш же код, на сколько я понял, предназначен для таких случаев: