# File lib/soap/mapping/mapping.rb, line 520
  def self.parse_schema_element_definition(schema_element, default_ns)
    if schema_element[0] == :choice
      parse_schema_definition(schema_element, default_ns)
    elsif schema_element[0].is_a?(Array)
      parse_schema_definition(schema_element, default_ns)
    else
      varname, info, occurrence = schema_element
      mapped_class_str, elename = info
      if occurrence
        minoccurs, maxoccurs = occurrence
      else
        # for backward compatibility
        minoccurs, maxoccurs = 1, 1
      end
      as_any = as_array = false
      if /\[\]$/ =~ mapped_class_str
        mapped_class_str = mapped_class_str.sub(/\[\]$/, '')
        if mapped_class_str.empty?
          mapped_class_str = nil
        end
        as_array = true
      end
      if mapped_class_str
        mapped_class = Mapping.class_from_name(mapped_class_str)
        if mapped_class.nil?
          warn("cannot find mapped class: #{mapped_class_str}")
        end
      end
      if elename == XSD::AnyTypeName
        as_any = true
      elsif elename.nil?
        elename = XSD::QName.new(default_ns, varname)
      end
      SchemaElementDefinition.new(
        varname, mapped_class, elename, minoccurs, maxoccurs, as_any, as_array)
    end
  end