>>38
Reflexivity (like the meta-object protocol) allows abstraction violation to be integrated into the abstraction. When reifying something essential about the problem or dealing with a (mostly) closed system (arguably like a window system) this becomes less relevant.