code: func (p *Program) String() string {
  	var buf bytes.Buffer
  	fmt.Fprintf(&buf, "@PG\tID:%s", p.uid)
  	if p.name != "" {
  		fmt.Fprintf(&buf, "\tPN:%s", p.name)
  	}
  	if p.command != "" {
  		fmt.Fprintf(&buf, "\tCL:%s", p.command)
  	}
  	if p.previous != "" {
  		fmt.Fprintf(&buf, "\tPP:%s", p.previous)
  	}
  	if p.version != "" {
  		fmt.Fprintf(&buf, "\tVN:%s", p.version)
  	}
  	for _, tp := range p.otherTags {
  		fmt.Fprintf(&buf, "\t%s:%s", tp.tag, tp.value)
  	}
  	return buf.String()
  }
docs: // String returns a string representation of the program according to the
  // SAM specification section 1.3,