Patch Set 1:

I had the same concern, but the input size (number of projects) will usually be bounded to something reasonable. For example, working with OSEE involves over 100 projects, and the UI performance was fine with my changes.

(I would imagine that there are many other cases where all the projects in the tree are being looped over. For example, Select All/None not only loop over all the TreeItems, but perform corresponding UI updates for all of them to redraw the checkboxes in the correct state.)

In any case, if it turns out to be slow for some people, it can be optimized later, but my first priority was to make the code correct.