code: func (r *ReadGroup) Tags(fn func(t Tag, value string)) {
  	if fn == nil {
  		return
  	}
  	fn(idTag, r.name)
  	if r.center != "" {
  		fn(centerTag, r.center)
  	}
  	if r.description != "" {
  		fn(descriptionTag, r.description)
  	}
  	if !r.date.IsZero() {
  		fn(dateTag, r.date.Format(iso8601TimeDateN))
  	}
  	if r.flowOrder != "" {
  		fn(flowOrderTag, r.flowOrder)
  	}
  	if r.keySeq != "" {
  		fn(keySequenceTag, r.keySeq)
  	}
  	if r.library != "" {
  		fn(libraryTag, r.library)
  	}
  	if r.program != "" {
  		fn(programTag, r.program)
  	}
  	if r.insertSize != 0 {
  		fn(insertSizeTag, fmt.Sprint(r.insertSize))
  	}
  	if r.platform != "" {
  		fn(platformTag, r.platform)
  	}
  	if r.platformUnit != "" {
  		fn(platformUnitTag, r.platformUnit)
  	}
  	if r.sample != "" {
  		fn(sampleTag, r.sample)
  	}
  	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 read group.
  // The function fn must not add or delete tags held by the receiver during
  // iteration.