The object/component/property system I wrote a while back, turned out to only need a few additional functions to be fully self-describing.
Why is this interesting, you might ask? Well, I'm glad you asked! This lets me implement level saving (as used from a level editor) using reflection on the objects and properties in the world. Traverse the world/object/component/property hierarchy, and write out a Lua script that re-creates that world. Instant level format. Ta-da!
Yes, this trick has been used before, but I still like it. And you'd be surprised how many APIs in the 'real world' I've run across that aren't actually self-describing. Just remember: If you can get from "here" to "there," you really ought to be able to get back again!
So, what was the thing I had to add? Turned out, a property didn't know which container it belonged to. It really shouldn't, because properties are separate from containers, but containers are property collections, so I added an accessor to get the collection from the property. Then, I had to punch through the name of the container as a member on the property collection, and I'm done. (An alternative would be to implement query-interface, but I've stayed away from that for now.)
Just thought I'd share.