public List getRange(Range r)
{
try
{
int s = r.start(m_size);
int e = r.end(m_size);
int n = e - s + 1;
if (n < 0) throw IndexErr.make(r).val;
List acc = new List(m_of, n);
acc.m_size = n;
Array.Copy(m_values, s, acc.m_values, 0, n);
return acc;
}
catch (ArgumentOutOfRangeException)
{
throw IndexErr.make(r).val;
}
}