code: @Override
      public boolean hasNext() {
  
          resetToLastKey();
  
          if (mIsFirst) {
              // makes sure, that mRange.hasNext() is called before the return
              // statement,
              // on the first call
              mIsFirst = false;
  
          } else {
              if (mReturn.hasNext()) {
                  return true;
              }
          }
  
          // check for more items in the binding sequence
          while (mRange.hasNext()) {
              mRange.next();
  
              // TODO: resetTo startKey would be better here, but not accessible
              // mReturn.resetToStartKey();
              mReturn.reset(getStartKey());
              if (mReturn.hasNext()) {
                  return true;
              }
          }
  
          resetToStartKey();
          return false;
  
      }
docs: {@inheritDoc}