code: public boolean visitPredicate(ExpressionOwner owner, Expression pred)
    {
      boolean savedIsSame = m_isSameContext;
      m_isSameContext = false;
  
      // Any further down, just collect the absolute paths.
      pred.callVisitors(owner, this);
  
      m_isSameContext = savedIsSame;
  
      // We've already gone down the subtree, so don't go have the caller 
      // go any further.
      return false;
    }
docs: Visit a predicate within a location path.  Note that there isn't a
  proper unique component for predicates, and that the expression will
  be called also for whatever type Expression is.
  
  @param owner The owner of the expression, to which the expression can
  be reset if rewriting takes place.
  @param pred The predicate object.
  @return true if the sub expressions should be traversed.