The Art of the Metaobject Protocol by Daniel Bobrow, Gregor Kiczales & Jim Des Rivieres