code: func (r *Reference) Tags(fn func(t Tag, value string)) {
  	if fn == nil {
  		return
  	}
  	fn(refNameTag, r.Name())
  	fn(refLengthTag, fmt.Sprint(r.lRef))
  	if r.assemID != "" {
  		fn(assemblyIDTag, r.assemID)
  	}
  	if r.md5 != "" {
  		fn(md5Tag, fmt.Sprintf("%x", []byte(r.md5)))
  	}
  	if r.species != "" {
  		fn(speciesTag, r.species)
  	}
  	if r.uri != nil {
  		fn(uriTag, r.uri.String())
  	}
  	for _, tp := range r.otherTags {
  		fn(tp.tag, tp.value)
  	}
  }
docs: // Tags applies the function fn to each of the tag-value pairs of the Reference.
  // The function fn must not add or delete tags held by the receiver during
  // iteration.