# File lib/arrayfields.rb, line 334
      def struct *fields
        fields = fields.flatten
        Class.new(self) do
          include ArrayFields
          const_set :FIELDS, ArrayFields::FieldSet.new(fields)
          fields.each do |field|
            field = field.to_s
            if field =~ %r/^[a-zA-Z_][a-zA-Z0-9_]*$/
              begin
                module_eval "def \#{ field } *a\na.size == 0 ? self['\#{ field }'] : (self.\#{ field } = a.shift)\nend\ndef \#{ field }= value\nself['\#{ field }'] = value\nend\n"
              rescue SyntaxError
                :by_ignoring_it
              end
            end
          end
          def initialize *a, &b
            super
          ensure
            @fieldset = self.class.const_get :FIELDS
          end
          def self.[] *elements
            array = new
            array.replace elements
            array
          end
        end
      end