These classes are start to be messy. I'd like to slim down these class by adopting supplement-like pattern. A fe performance-critical bits should be stayed there. But others can be kicked out to their own optional/supplemental objects. This could even save some memory footprint because we can allocate what we actually needs. Ideally we could eliminate ElementRareData: It's just a set of supplements.
Also see the bug 106586.
This is backwards. Making NodeRareData allows us to delete NodeRareData early, not the other way around.