# File ValidForm.rb, line 71
        def add_fields(*fieldsOrContainers)
                @fieldsById=WriteOnceHash.new unless @fieldsById
                @fieldsByName=WriteOnceHash.new unless @fieldsByName
                @fields=[] unless @fields

                fieldsOrContainers.each{ |fs|
                        raise ArgumentError,"An illegal class (#{fs.class}) was passed to add_fields; only the following classes are allowed: #{@allowed_container_classes.join(',')}" if @allowed_container_classes && (@allowed_container_classes & fs.class.ancestors).empty?
                        raise ArgumentError,"An illegal class (#{fs.class}) was passed to add_fields; the following classes may not be added: #{@disallowed_container_classes.join(',')}" if @disallowed_container_classes && !((@disallowed_container_classes & fs.class.ancestors).empty?)
                        raise ArgumentError,"You tried to add a container to itself. Are you trying to kill us all?" if fs==self
                        fs.parent_container=self if fs.respond_to?(:parent_container=)
                        @fieldsById[fs.id] = fs if fs.id
                        if fs.name
                                if !@fieldsByName[fs.name]
                                        @fieldsByName[fs.name] = [fs]
                                else
                                        @fieldsByName[fs.name] << fs
                                end
                        end
                        fs.everyField(true).each{ |f|
                                @fieldsById[f.id] = f if f.id
                                if f.name
                                        if !@fieldsByName[f.name]
                                                @fieldsByName[f.name] = [f]
                                        else
                                                @fieldsByName[f.name] << f
                                        end
                                end
                        } if fs.respond_to?(:everyField)
                }
                @fields.push(*fieldsOrContainers)
                @parent_container.subcontainer_changed if @parent_container
                self
        end