compile-time avl-tree