def self.append_features(klass)
super
klass.module_eval("\nOTHER_ELEMENTS = []\nNEED_INITIALIZE_VARIABLES = []\n\ndef self.inherited(subclass)\nsubclass.const_set(\"OTHER_ELEMENTS\", [])\nsubclass.const_set(\"NEED_INITIALIZE_VARIABLES\", [])\n\nsubclass.module_eval(<<-EOEOC, __FILE__, __LINE__)\ndef self.other_elements\nconst_get(\"OTHER_ELEMENTS\") + super\nend\n\ndef self.need_initialize_variables\nconst_get(\"NEED_INITIALIZE_VARIABLES\") + super\nend\nEOEOC\nend\n\ndef self.add_other_element(variable_name)\nconst_get(\"OTHER_ELEMENTS\") << variable_name\nend\n\ndef self.other_elements\nOTHER_ELEMENTS\nend\n\ndef self.add_need_initialize_variable(variable_name)\nconst_get(\"NEED_INITIALIZE_VARIABLES\") << variable_name\nend\n\ndef self.need_initialize_variables\nNEED_INITIALIZE_VARIABLES\nend\n", __FILE__, __LINE__)
end