Node PushTail(int level, Node parent, Node tailnode)
{
//if parent is leaf, insert node,
// else does it map to an existing child? -> nodeToInsert = pushNode one more level
// else alloc new path
//return nodeToInsert placed in copy of parent
int subidx = ((_cnt - 1) >> level) & 0x01f;
Node ret = new Node(parent.Edit, (object[])parent.Array.Clone());
Node nodeToInsert;
if (level == 5)
{
nodeToInsert = tailnode;
}
else
{
Node child = (Node)parent.Array[subidx];
nodeToInsert = (child != null)
? PushTail(level - 5, child, tailnode)
: newPath(_root.Edit, level - 5, tailnode);
}
ret.Array[subidx] = nodeToInsert;
return ret;
}