code: func getUTMetaSize(data []byte) (
  	utMetadata int, metadataSize int, err error) {
  
  	v, err := Decode(data)
  	if err != nil {
  		return
  	}
  
  	dict, ok := v.(map[string]interface{})
  	if !ok {
  		err = errors.New("invalid dict")
  		return
  	}
  
  	if err = ParseKeys(
  		dict, [][]string{{"metadata_size", "int"}, {"m", "map"}}); err != nil {
  		return
  	}
  
  	m := dict["m"].(map[string]interface{})
  	if err = ParseKey(m, "ut_metadata", "int"); err != nil {
  		return
  	}
  
  	utMetadata = m["ut_metadata"].(int)
  	metadataSize = dict["metadata_size"].(int)
  
  	if metadataSize > MaxMetadataSize {
  		err = errors.New("metadata_size too long")
  	}
  	return
  }
docs: // getUTMetaSize returns the ut_metadata and metadata_size.