# File lib/validates_timeliness/active_record/attribute_methods.rb, line 45
        def define_attribute_methods_with_timeliness
          return if generated_methods?
          timeliness_methods = []

          columns_hash.each do |name, column|
            if [:date, :time, :datetime].include?(column.type)
              method_name = "#{name}="
              next if instance_method_already_implemented?(method_name)

              time_zone_aware = create_time_zone_conversion_attribute?(name, column) rescue false
              define_method(method_name) do |value|
                 write_date_time_attribute(name, value, column.type, time_zone_aware)
              end
              timeliness_methods << method_name
            end
          end

          # Hack to get around instance_method_already_implemented? caching the
          # methods in the ivar. It then appears to subsequent calls that the
          # methods defined here, have not been and get defined again.
          @_defined_class_methods = nil

          define_attribute_methods_without_timeliness
          # add generated methods which is a Set object hence no += method
          timeliness_methods.each {|attr| generated_methods << attr }
        end