# File lib/anise/annotative/attributes.rb, line 49
      def self.define_annotated_attribute(base, attr_method_name)
        base.module_eval do
          define_method(attr_method_name) do |*args|
            args.flatten!

            harg={}; while args.last.is_a?(Hash)
              harg.update(args.pop)
            end

            raise ArgumentError if args.empty? and harg.empty?

            if args.empty?  # hash mode
              harg.each { |a,h| __send__(attr_method_name,a,h) }
            else
              klass = harg[:class] = args.pop if args.last.is_a?(Class)

              super(*args) #attr_method.call(*args)

              args.each{|a| ann(a.to_sym,harg)}

              instance_attributes!.concat(args)  #merge!

              # Use this callback to customize for your needs.
              if respond_to?(:attr_callback)
                attr_callback(self, args, harg)
              end

              # return the names of the attributes created
              return args
            end
          end
        end
      end