code: func (iter *MockStateRangeQueryIterator) HasNext() bool {
  	if iter.Closed {
  		// previously called Close()
  		mockLogger.Debug("HasNext() but already closed")
  		return false
  	}
  
  	if iter.Current == nil {
  		mockLogger.Error("HasNext() couldn't get Current")
  		return false
  	}
  
  	current := iter.Current
  	for current != nil {
  		// if this is an open-ended query for all keys, return true
  		if iter.StartKey == "" && iter.EndKey == "" {
  			return true
  		}
  		comp1 := strings.Compare(current.Value.(string), iter.StartKey)
  		comp2 := strings.Compare(current.Value.(string), iter.EndKey)
  		if comp1 >= 0 {
  			if comp2 < 0 {
  				mockLogger.Debug("HasNext() got next")
  				return true
  			} else {
  				mockLogger.Debug("HasNext() but no next")
  				return false
  
  			}
  		}
  		current = current.Next()
  	}
  
  	// we've reached the end of the underlying values
  	mockLogger.Debug("HasNext() but no next")
  	return false
  }
docs: // HasNext returns true if the range query iterator contains additional keys
  // and values.