macro is better than simply defining a destructor because usage patterns will be tested whenever associated types are accessed. [SVN r35198]