@Test
  public void testUnderflowRemoveEnd() {
    final LeafNode leaf = leaf(1, 2, 3, 4);

    final RemoveResult result = leaf._removed(4, 1);

    final LeafNode newLeaf = (LeafNode) result.newNode;
    assertArrayEquals(new Integer[] {1, 2, 3}, newLeaf.keys);
    assertArrayEquals(new Integer[] {100, 200, 300}, newLeaf.values);

    assertEquals(true, result.underflowed);
    assertEquals(1, result.leftSeparator);
  }
  @Test
  public void testSimpleRemoveNotFound() {
    final LeafNode leaf = leaf(1, 2, 4, 5);

    final RemoveResult result = leaf._removed(3, 1);

    final LeafNode newLeaf = (LeafNode) result.newNode;
    assertArrayEquals(new Integer[] {1, 2, 4, 5}, newLeaf.keys);
    assertArrayEquals(new Integer[] {100, 200, 400, 500}, newLeaf.values);

    assertEquals(false, result.underflowed);
    assertEquals(1, result.leftSeparator);
  }