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.