public boolean nextNode() {
    super.setPosition(getCurrentPosition() + 1);
    if (!setStarted) {
      setStarted = true;
      if (!(nodeTest instanceof NodeNameTest)) {
        return false;
      }

      NodeNameTest nodeNameTest = (NodeNameTest) nodeTest;
      QName testName = nodeNameTest.getNodeName();
      if (testName.getPrefix() != null) {
        return false;
      }
      if (nodeNameTest.isWildcard()) {
        iterator = parentContext.getCurrentNodePointer().namespaceIterator();
      } else {
        currentNodePointer =
            parentContext.getCurrentNodePointer().namespacePointer(testName.getName());
        return currentNodePointer != null;
      }
    }

    if (iterator == null) {
      return false;
    }
    if (!iterator.setPosition(iterator.getPosition() + 1)) {
      return false;
    }
    currentNodePointer = iterator.getNodePointer();
    return true;
  }
 public void reset() {
   setStarted = false;
   iterator = null;
   super.reset();
 }