testAvlTreeIndexOf() {
    const tree = new AvlTree();
    const values = ['bill', 'blake', 'elliot', 'jacob', 'john', 'myles', 'ted'];

    // Insert strings into tree out of order
    tree.add('frodo');
    tree.add(values[4]);
    tree.add(values[3]);
    tree.add(values[0]);
    tree.add(values[6]);
    tree.add('samwise');
    tree.add(values[5]);
    tree.add(values[1]);
    tree.add(values[2]);
    tree.add('pippin');

    // Remove strings from tree
    assertEquals('samwise', tree.remove('samwise'));
    assertEquals('pippin', tree.remove('pippin'));
    assertEquals('frodo', tree.remove('frodo'));

    for (let i = 0; i < values.length; i += 1) {
      assertEquals(i, tree.indexOf(values[i]));
    }
    assertEquals(-1, tree.indexOf('samwise'));
    assertEquals(-1, tree.indexOf('pippin'));
    assertEquals(-1, tree.indexOf('frodo'));
  }
This test verifies that we can insert values into and remove values from
the AvlTree and have its indexOf method correctly determine the in-order
index of the values it contains.