code: @Override
      public final boolean hasNext() {
          resetToLastKey();
          if (!mFirst && ((ITreeStructData)getNode()).hasRightSibling()) {
              moveTo(((ITreeStructData)getNode()).getRightSiblingKey());
              return true;
          } else if (mFirst && (((ITreeStructData)getNode()).hasFirstChild())) {
              mFirst = false;
              moveTo(((ITreeStructData)getNode()).getFirstChildKey());
              return true;
          } else {
              resetToStartKey();
              return false;
          }
      }
docs: {@inheritDoc}