# File lib/sax-machine/sax_document.rb, line 66
    def elements(name, options = {}, &block)
      real_name = (options[:as] ||= name).to_s

      if options[:class]
        sax_config.add_collection_element(name, options)
      else
        if block_given?
          define_method("add_#{real_name}") do |value|
            send(real_name).send(:<<, instance_exec(value, &block))
          end
        else
          define_method("add_#{real_name}") do |value|
            send(real_name).send(:<<, value)
          end
        end

        sax_config.add_top_level_element(name, options.merge(collection: true))
      end

      if !method_defined?(real_name)
        class_eval "def \#{real_name}\n@\#{real_name} ||= []\nend\n"
      end

      attr_writer(options[:as]) unless method_defined?("#{options[:as]}=")
    end