in java/commons/src/main/java/com/epam/deltix/data/connectors/commons/l2/Book.java [184:221]
protected void insert(final int depth, final E event) {
if (depth < 0) {
return;
}
final boolean notifyInsert = listener != null ?
listener.beforeInsert(this, depth, event) : false;
if (currentSize == items.length) {
if (items.length >= BOOK_SIZE_LIMIT) {
throw new IllegalStateException("Unbelievable book size " + items.length);
}
final I[] newItems = (I[]) Array.newInstance(items.getClass().getComponentType(),
items.length << 1); // unchecked
System.arraycopy(items, 0, newItems, 0, items.length);
items = newItems;
}
int tail = currentSize - depth;
if (tail > 0) {
if (currentSize == items.length) {
tail--;
}
System.arraycopy(items, depth, items, depth + 1, tail);
}
final I item = pool.borrow();
item.set(event);
items[depth] = item;
currentSize++;
if (notifyInsert) {
listener.onInsert(this, depth, item);
}
}