code: @Override
      public final boolean hasNext() {
  
          if (mIsFirst) {
              mIsFirst = false;
              // if the context node is an attribute or namespace node,
              // the following-sibling axis is empty
              if (getNode().getKind() == IConstants.ATTRIBUTE
              // || getTransaction().isNamespaceKind()
              ) {
                  resetToStartKey();
                  return false;
              }
          }
  
          resetToLastKey();
  
          if (((ITreeStructData)getNode()).hasRightSibling()) {
              moveTo(((ITreeStructData)getNode()).getRightSiblingKey());
              return true;
          }
          resetToStartKey();
          return false;
      }
docs: {@inheritDoc}