So, offline discussion on this. JS has no problems with sparse arrays, and as the number of list levels is usually <= 10, this causes no major problems. Changing it to an array would help eliminate the strange number/string behaviours of a keyed object that CC complains about. Opinions on IRC are mixed though as to whether this helps clarify the code.