code: @Override
      public final boolean hasNext() {
  
          resetToLastKey();
  
          while (mAxis.hasNext()) {
  
              // call next(), if it was not already called for that axis.
              if (mCallNext) {
                  mAxis.next();
              }
  
              // add current item key to the set. If true is returned the item is
              // no
              // duplicate and can be returned by the duplicate filter.
              if (mDupSet.add(getNode().getDataKey())) {
                  return true;
              }
          }
  
          resetToStartKey();
          return false;
      }
docs: {@inheritDoc}