code: func (it *Iterator) SetMeta(meta uint16) error {
  	// Try to reuse the same value bytes. Do this only in the case where meta
  	// is increasing, in order to avoid cases where the meta is changed, then
  	// changed back to the original value, which would make it impossible to
  	// detect updates had occurred in the interim.
  	if meta > decodeMeta(it.value) {
  		valOffset, valSize := decodeValue(it.value)
  		new := encodeValue(valOffset, valSize, meta)
  		return it.trySetValue(new)
  	}
  
  	return it.Set(it.Value(), meta)
  }
docs: // SetMeta updates the meta value of the current iteration record if it has not
  // been updated or deleted since iterating or seeking to it. If the record has
  // been updated, then SetMeta positions the iterator on the most current value
  // and returns ErrRecordUpdated. If the record has been deleted, then SetMeta
  // keeps the iterator positioned on the current record with the current value
  // and returns ErrRecordDeleted.