code: @Override
      public final boolean hasNext() {
          resetToLastKey();
  
          // Self
          if (mFirst && isSelfIncluded()) {
              mFirst = false;
              return true;
          }
  
          if (getNode().getKind() != IConstants.ROOT && getNode().hasParent()
              && getNode().getParentKey() != ROOT_NODE) {
              moveTo(getNode().getParentKey());
              return true;
          }
          resetToStartKey();
          return false;
      }
docs: {@inheritDoc}