protected static XObject executePredicates( XPathContext xctxt, StepPattern prevStep, XObject score, int context, int predicateRootContext)
protected final boolean executePredicates( XPathContext xctxt, DTM dtm, int currentNode)
  protected static XObject executePredicates(          XPathContext xctxt, StepPattern prevStep, XObject score,           int context, int predicateRootContext)            throws javax.xml.transform.TransformerException  {    int n = prevStep.getPredicateCount();    if (n != 0)    {      try      {        xctxt.pushCurrentNode(context);        xctxt.pushSubContextList(prevStep);        xctxt.pushPredicateRoot(predicateRootContext);        for (int i = 0; i < n; i++)        {          xctxt.pushPredicatePos(i);          try          {            XObject pred = prevStep.m_predicates[i].execute(xctxt);              if (XObject.CLASS_NUMBER == pred.getType())            {              int pos = (int) pred.num();              if (prevStep.getProximityPosition(xctxt, i) != pos)              {                score = NodeTest.SCORE_NONE;                  break;              }            }            else if (!pred.bool())            {              score = NodeTest.SCORE_NONE;                break;            }          }          finally          {            xctxt.popPredicatePos();          }        }      }      finally      {        xctxt.popCurrentNode();        xctxt.popSubContextList();        xctxt.popPredicateRoot();      }    }    return score;  }