xctxt.pushPredicatePos(i); try
XObject pred = m_predicates[i].execute(xctxt);  if (XObject.CLASS_NUMBER == pred.getType())
  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;  }