Bubblecheck was being a bit too aggressive - toned it down by letting cascades happen when all children are checked (to counterbalance incorrectly unchecking parents - now it goes back and figures out that since its children are checked, it must be checked too)