protected Array EnsureArrayIndex(Array a, int index, Type elementType)
{
if (a == null) return Array.CreateInstance(elementType, 32);
if (index < a.Length) return a;
Array b = Array.CreateInstance(elementType, a.Length * 2);
Array.Copy(a, b, index);
return b;
}