code: func (dec *lockDecoder) Decode(iter *Iterator) (bool, error) {
  	if iter.Error() != nil || !iter.Valid() {
  		return false, iter.Error()
  	}
  
  	iterKey := iter.Key()
  	key, ver, err := mvccDecode(iterKey)
  	if err != nil {
  		return false, errors.Trace(err)
  	}
  	if !bytes.Equal(key, dec.expectKey) {
  		return false, nil
  	}
  	if ver != lockVer {
  		return false, nil
  	}
  
  	var lock mvccLock
  	err = lock.UnmarshalBinary(iter.Value())
  	if err != nil {
  		return false, errors.Trace(err)
  	}
  	dec.lock = lock
  	iter.Next()
  	return true, nil
  }
docs: // Decode decodes the lock value if current iterator is at expectKey::lock.