in java/src/main/java/com/epam/deltix/containers/AvlTree.java [160:198]
private void resize() {
if (capacity == 0)
{
capacity = 10;
prev = new int[capacity];
next = new int[capacity];
freeIndexes = new int[capacity];
while (values.size() < capacity) {
values.add(null);
}
while (keys.size() < capacity) {
keys.add(null);
}
for(int i = 0; i < capacity; i++)
{
freeIndexes[i] = i;
prev[i] = next[i] = -1;
}
freeIndexesHead = capacity - 1;
}
else
{
capacity <<= 1;
while (values.size() < capacity) {
values.add(null);
}
while (keys.size() < capacity) {
keys.add(null);
}
prev = Arrays.copyOf(prev, capacity);
next = Arrays.copyOf(next, capacity);
freeIndexes = Arrays.copyOf(freeIndexes, capacity);
for(int i = (capacity >> 1); i < capacity; i++)
{
freeIndexes[++freeIndexesHead] = i;
prev[i] = next[i] = -1;
}
}
}