private List insertAll(int i, List list)
{
modify();
if (list.m_size == 0) return this;
if (m_values.Length < m_size+list.m_size)
grow(m_size+list.m_size);
if (i < m_size)
Array.Copy(m_values, i, m_values, i+list.m_size, m_size-i);
Array.Copy(list.m_values, 0, m_values, i, list.m_size);
m_size += list.m_size;
return this;
}