It's a design I've used myself in order to get around an inefficiency in the BM TList type (not to mention because of the Sort()/Compare() issues mentioned above.)
It's not necessarily a poor design - but it is over-complicated because of the reasons above - despite that, it is still infinitely more efficient than the alternative.
It's not necessarily a poor design - but it is over-complicated because of the reasons above - despite that, it is still infinitely more efficient than the alternative.