# File lib/soap/mapping/mapping.rb, line 352
  def self.set_attributes(obj, values)
    case obj
    when ::SOAP::Mapping::Object
      values.each do |attr_name, value|
        obj.__add_xmlele_value(attr_name, value)
      end
    else
      values.each do |attr_name, value|
        # untaint depends GenSupport.safevarname
        name = Mapping.safevarname(attr_name).untaint
        setter = name + "="
        if obj.respond_to?(setter)
          obj.__send__(setter, value)
        else
          obj.instance_variable_set('@' + name, value)
          begin
            unless obj.respond_to?(name)
              obj.instance_eval "def \#{name}\n@\#{name}\nend\n"
            end
            unless self.respond_to?(name + "=")
              obj.instance_eval "def \#{name}=(value)\n@\#{name} = value\nend\n"
            end
          rescue TypeError
            # singleton class may not exist (e.g. Float)
          end
        end
      end
    end
  end