code: @Override
      public boolean hasNext() {
  
          // first all items of the second operand are stored in the set.
          while (mOp2.hasNext()) {
              if (getNode().getDataKey() < 0) { // only nodes are
                  // allowed
                  throw new XPathError(ErrorType.XPTY0004);
              }
              mDupSet.add(getNode().getDataKey());
          }
  
          while (mOp1.hasNext()) {
              if (getNode().getDataKey() < 0) { // only nodes are
                  // allowed
                  throw new XPathError(ErrorType.XPTY0004);
              }
  
              // return true, if node is not already in the set, which means, that
              // it is
              // not also an item of the result set of the second operand
              // sequence.
              if (mDupSet.add(getNode().getDataKey())) {
                  return true;
              }
          }
  
          return false;
      }
docs: {@inheritDoc}