in model/src/main/java/jetbrains/jetpad/model/collections/list/TreeList.java [203:223]
AvlTree<T> remove(int index) {
int leftSize = size(myLeft);
if (index == leftSize) {
if (myLeft == null) return myRight;
if (myRight == null) return myLeft;
T newVal = myRight.get(0);
return balanceLeft(new AvlTree<>(myLeft, myRight.remove(0), newVal));
} else if (index < leftSize) {
if (myLeft == null) {
throw new IndexOutOfBoundsException();
}
return balanceRight(new AvlTree<>(myLeft.remove(index), myRight, myValue));
} else {
if (myRight == null) {
throw new IndexOutOfBoundsException();
}
return balanceLeft(new AvlTree<>(myLeft, myRight.remove(index - leftSize - 1), myValue));
}
}