# File lib/active_model/attribute_methods.rb, line 288
      def define_attribute_method(attr_name)
        attribute_method_matchers.each do |matcher|
          unless instance_method_already_implemented?(matcher.method_name(attr_name))
            generate_method = "define_method_#{matcher.prefix}attribute#{matcher.suffix}"

            if respond_to?(generate_method)
              send(generate_method, attr_name)
            else
              method_name = matcher.method_name(attr_name)

              generated_attribute_methods.module_eval "if method_defined?('\#{method_name}')\nundef :'\#{method_name}'\nend\n", __FILE__, __LINE__ + 1

              if method_name.to_s =~ COMPILABLE_REGEXP
                generated_attribute_methods.module_eval "def \#{method_name}(*args)\nsend(:\#{matcher.method_missing_target}, '\#{attr_name}', *args)\nend\n", __FILE__, __LINE__ + 1
              else
                generated_attribute_methods.module_eval "define_method('\#{method_name}') do |*args|\nsend('\#{matcher.method_missing_target}', '\#{attr_name}', *args)\nend\n", __FILE__, __LINE__ + 1
              end
            end
          end
        end
      end