Make the AVL tree support generic types