/**
  * {@inheritDoc}
  *
  * <p>The outer query hits loop contains the ancestor nodes.
  */
 public ScoreNode[][] getMatchingScoreNodes(ScoreNode ancestor) throws IOException {
   try {
     Path ancestorPath = hmgr.getPath(ancestor.getNodeId());
     PathBuilder builder = new PathBuilder(ancestorPath);
     builder.addAll(relPath.getElements());
     return contextIndex.getScoreNodes(builder.getPath().getNormalizedPath());
   } catch (RepositoryException e) {
     // ignore, probably does not exist anymore
     return null;
   }
 }
 /** @see org.apache.jackrabbit.core.security.authorization.AccessControlUtils#isAcItem(Path) */
 public boolean isAcItem(Path absPath) throws RepositoryException {
   Path.Element[] elems = absPath.getElements();
   // start looking for a rep:policy name starting from the last element.
   // NOTE: with the current content structure max. 3 levels must be looked
   // at as the rep:policy node may only have ACE nodes with properties.
   if (elems.length > 1) {
     for (int index = elems.length - 1, j = 1; index >= 0 && j <= 3; index--, j++) {
       if (N_POLICY.equals(elems[index].getName())) {
         return true;
       }
     }
   }
   return false;
 }