# File sql-serialize.rb, line 411
  def sql_insert_array (dbi)
    instance_variables.each { |var|
      val = instance_eval(var)

      if (val.kind_of? Array)
        val.each_index { |index|
          assoc_id = nil
          if (val[index].respond_to? :insert) # insert but don't start a new transaction

            assoc_id = val[index].instance_eval("sql_exist_in_db?(ObjectSpace._id2ref(" + dbi.id.to_s + "))")
            unless assoc_id
              assoc_id = val[index].insert(dbi, false)
            end
            sql_increase_refcount (dbi, assoc_id)
          else
            # use method to insert basic data types such as strings

            # and numerics

            assoc_id = sql_basic_insert (dbi, val[index])
          end

          sql = "INSERT INTO " + sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "") + "_array") + " ("
          sql << sql_quote_name("sql_assoc_id") << ", " << sql_quote_name("arr_index")
          sql << ", " << sql_quote_name("val_id") 
          sql << ", " << sql_quote_name("symbol") << ") VALUES ("
          sql << sql_assoc_id(dbi).to_s << ", " << index.to_s << ", "
          sql << assoc_id.to_s << ", " << sql_quote_str(var[1,var.length]) << ")" 
          dbi.do_more (sql)
        }
      end
    }
  end