# File lib/attic.rb, line 110
110:   def self.extended(o)
111:     # This class has already been extended. 
112:     return if o.ancestors.member? Attic::InstanceMethods
113:     
114:     
115:     ## NOTE: This is just a reminder for a more descerning way to 
116:     ## include the meta methods, instead of using a global mixin. 
117:     ##o.class_eval do
118:     ##  include ObjectHelpers
119:     ##end
120:     # Create an instance method that returns the attic variables. 
121:     o.send :include, Attic::InstanceMethods
122:     #p [:extend, self, o]
123:     
124:     o.metaclass.instance_variable_set("@attic_variables", [])
125:     o.class_eval do
126:       def self.inherited(o2)
127:         #p [:inherit, self, o2]
128:         attic_vars = self.attic_variables.clone
129:         o2.metaclass.instance_variable_set("@attic_variables", attic_vars)
130:       end
131:       if method_defined? :instance_variables
132:         old_instance_variables = instance_method(:instance_variables)
133:         define_method :instance_variables do
134:           ret = old_instance_variables.bind(self).call.clone
135:           ret.reject! { |v| v.to_s =~ /^@___?attic/ }  # match 2 or 3 underscores
136:           ret
137:         end
138:         define_method :all_instance_variables do
139:           old_instance_variables.bind(self).call
140:         end
141:       end
142:     end
143:   
144:     
145:   end