code: @Override
      public boolean hasNext() {
  
          resetToLastKey();
  
          if (mCurrent != null) {
  
              if (mCurrent.hasNext()) {
                  return true;
              } else {
                  // necessary, because previous hasNext() changes state
                  resetToLastKey();
              }
          }
  
          while (mNum < mSeq.size()) {
  
              mCurrent = mSeq.get(mNum++);
  
              if (mCurrent.hasNext()) {
                  return true;
              }
          }
  
          resetToStartKey();
          return false;
  
      }
docs: {@inheritDoc}