public object removeAt(long index)
{
modify();
int i = (int)index;
if (i < 0) i = m_size + i;
if (i >= m_size) throw IndexErr.make(index).val;
object old = m_values[i];
if (i < m_size-1)
Array.Copy(m_values, i+1, m_values, i, m_size-i-1);
m_size--;
return old;
}