private void Resize()
{
int size = (int)(GROWTH_RATE * nodes);
if (size < DEFAULT_INITIAL_SIZE)
{
size = DEFAULT_INITIAL_SIZE;
}
int[] oldChildCount = childCount;
int[] oldAttribute = attribute;
long[] oldnodeCount = nodeCount;
int[] oldParent = parent;
int[] oldNext = next;
int[][] oldNodeChildren = nodeChildren;
int[] oldConditional = conditional;
childCount = new int[size];
attribute = new int[size];
nodeCount = new long[size];
parent = new int[size];
next = new int[size];
nodeChildren = new int[size][];
conditional = new int[size];
Array.Copy(oldChildCount, 0, this.childCount, 0, nodes);
Array.Copy(oldAttribute, 0, this.attribute, 0, nodes);
Array.Copy(oldnodeCount, 0, this.nodeCount, 0, nodes);
Array.Copy(oldParent, 0, this.parent, 0, nodes);
Array.Copy(oldNext, 0, this.next, 0, nodes);
Array.Copy(oldNodeChildren, 0, this.nodeChildren, 0, nodes);
Array.Copy(oldConditional, 0, this.conditional, 0, nodes);
}