code: func (dec *skipDecoder) Decode(iter *Iterator) (bool, error) {
  	if iter.Error() != nil {
  		return false, iter.Error()
  	}
  	for iter.Valid() {
  		key, _, err := mvccDecode(iter.Key())
  		if err != nil {
  			return false, errors.Trace(err)
  		}
  		if !bytes.Equal(key, dec.currKey) {
  			dec.currKey = key
  			return true, nil
  		}
  		iter.Next()
  	}
  	return false, nil
  }
docs: // Decode skips the iterator as long as its key is currKey, the new key would be stored.