"> I don't understand you want that > > 'sym=' is interpreted as self.sym= > > and > > 'sym =' interpreted as a local variable ? I did not understand that the parsing rules of Ruby imply that a plain `sym = x' is interpreted as a '(self.sym) = x' ... . > C> def attr_inner_accessor sym > C> attr_accessor sym > C> include ThisPointerModule > C> extend ThisPointerModule > C> module_eval "def set_#{sym.to_s} (x) \ > C> @__this__.#{sym.to_s} = x end" > C> end > > If I've well understood your source, you replace a NODE_ATTRSET with a > call to a def (which is slower), no ? Aside form the fact that the whole endeavor is unnecessary ``include ThisPointerModule'' ``extend ThisPointerModule'' turns the methods of ``ThisPointerModule'' into class method (and is faster then eval I think.) Christoph