assertThat(expr.matcher("/a/b/c/d/e/@something").getSelectedNodePath(), is("/a/b/c"));
assertThat(expr.matcher("/a/b/c/d/e/@something").groupCount(), is(1));
assertThat(expr.matcher("/a/b/c/d/e/@something").group(0), is("/a/b/c/d/e/@something"));
assertThat(expr.matcher("/a/b/c/d/e/@something").group(1), is("/b/c"));
assertThat(expr.matcher("/a/b/e/f/g/@something").getSelectedNodePath(), is("/a/b/e"));
assertThat(expr.matcher("/a/b/e/f/g/@something").groupCount(), is(2));
assertThat(expr.matcher("/a/b/e/f/g/@something").group(0), is("/a/b/e/f/g/@something"));
assertThat(expr.matcher("/a/b/e/f/g/@something").group(1), is("/b/e"));
assertThat(expr.matcher("/a/b/e/f/g/@something").group(2), is("b"));
assertThat(expr.matcher("/a/c/e/f/g/@something").getSelectedNodePath(), is("/a/c/e"));
assertThat(expr.matcher("/a/c/e/f/g/@something").groupCount(), is(2));
assertThat(expr.matcher("/a/c/e/f/g/@something").group(0), is("/a/c/e/f/g/@something"));
assertThat(expr.matcher("/a/c/e/f/g/@something").group(1), is("/c/e"));
assertThat(expr.matcher("/a/c/e/f/g/@something").group(2), is("c"));
assertThat(expr.matcher("/a/d/e/f/g/@something").getSelectedNodePath(), is("/a/d/e"));
assertThat(expr.matcher("/a/d/e/f/g/@something").groupCount(), is(2));
assertThat(expr.matcher("/a/d/e/f/g/@something").group(0), is("/a/d/e/f/g/@something"));
assertThat(expr.matcher("/a/d/e/f/g/@something").group(1), is("/d/e"));
assertThat(expr.matcher("/a/d/e/f/g/@something").group(2), is("d"));
assertThat(expr.matcher("/a/e/f/g/@something").getSelectedNodePath(), is("/a/e"));
assertThat(expr.matcher("/a/e/f/g/@something").groupCount(), is(2));
assertThat(expr.matcher("/a/e/f/g/@something").group(0), is("/a/e/f/g/@something"));
assertThat(expr.matcher("/a/e/f/g/@something").group(1), is("/e"));
assertThat(expr.matcher("/a/e/f/g/@something").group(2), is(nullValue()));