object[] ArrayFor(int i)
{
if (i >= 0 && i < _cnt)
{
if (i >= Tailoff())
return _tail;
Node node = _root;
for (int level = _shift; level > 0; level -= 5)
node = (Node)node.Array[(i >> level) & 0x01f];
return node.Array;
}
throw new ArgumentOutOfRangeException("i");
}