# File lib/big_record/model.rb, line 526
    def execute_callstack_for_multiparameter_attributes(callstack)
      errors = []
      callstack.each do |name, values|
        # TODO: handle aggregation reflections
#        klass = (self.class.reflect_on_aggregation(name.to_sym) || column_for_attribute(name)).klass
        column = column_for_attribute(name)
        if column
          klass = column.klass

          # Ugly fix for time selectors so that when any value is invalid the value is considered invalid, hence nil
          if values.empty? or (column.type == :time and !values[-2..-1].all?) or ([:date, :datetime].include?(column.type) and !values.all?)
            send(name + "=", nil)
          else
            # End of the ugly time fix...
            values = [2000, 1, 1, values[-2], values[-1]] if column.type == :time and !values[0..2].all?
            begin
              send(name + "=", Time == klass ? (@@default_timezone == :utc ? klass.utc(*values) : klass.local(*values)) : klass.new(*values))
            rescue => ex
              errors << AttributeAssignmentError.new("error on assignment #{values.inspect} to #{name}", ex, name)
            end
          end
        end
      end
      unless errors.empty?
        raise MultiparameterAssignmentErrors.new(errors), "#{errors.size} error(s) on assignment of multiparameter attributes"
      end
    end