@Test
 public void headPathShouldReturnTheCorrectSubPath() {
   TreePath path = new TreePath(new Object[] {"a", "b", "c"});
   TreePath expected = path.getParentPath();
   TreePath actual = TreePaths.headPath(path, path.getSegmentCount() - 1);
   assertThat(actual, equalTo(expected));
 }
 @Test
 public void headPathShouldThrowAnExceptionIfIndexIsNegative() {
   TreePath path = newPath();
   thrown.expect(IllegalArgumentException.class);
   TreePaths.headPath(path, -1);
 }
 @Test
 public void headPathShouldReturnAnEqualPathIfIndexIsEqualToThePathLength() {
   TreePath path = newPath();
   assertThat(TreePaths.headPath(path, path.getSegmentCount()), equalTo(path));
 }
 @Test
 public void headPathShouldThrowAnExceptionIfIndexIsGreaterThanThePathLength() {
   TreePath path = newPath();
   thrown.expect(IllegalArgumentException.class);
   TreePaths.headPath(path, path.getSegmentCount() + 1);
 }