public virtual void Put(int key, int value)
{
if (key < 0)
{
Kit.CodeBug();
}
int index = EnsureIndex(key, true);
if (ivaluesShift == 0)
{
int N = 1 << power;
// keys.length can be N * 2 after clear which set ivaluesShift to 0
if (keys.Length != N * 2)
{
int[] tmp = new int[N * 2];
System.Array.Copy(keys, 0, tmp, 0, N);
keys = tmp;
}
ivaluesShift = N;
}
keys[ivaluesShift + index] = value;
}