}
  public int nextNode()  {        	if(m_foundLast)  		return DTM.NULL;  		    if(DTM.NULL == m_lastFetched)    {      resetProximityPositions();    }    int next;        org.apache.xpath.VariableStack vars;    int savedStart;    if (-1 != m_stackFrame)    {      vars = m_execContext.getVarStack();      // These three statements need to be combined into one operation.      savedStart = vars.getStackFrame();      vars.setStackFrame(m_stackFrame);    }    else    {      // Yuck.  Just to shut up the compiler!      vars = null;      savedStart = 0;    }        try    {      do      {        next = getNextNode();          if (DTM.NULL != next)        {          if(DTMIterator.FILTER_ACCEPT == acceptNode(next))            break;          else            continue;        }        else          break;      }      while (next != DTM.NULL);        if (DTM.NULL != next)      {      	m_pos++;        return next;      }      else      {        m_foundLast = true;          return DTM.NULL;      }    }    finally    {      if (-1 != m_stackFrame)      {        // These two statements need to be combined into one operation.        vars.setStackFrame(savedStart);      }    }  }