code: func (bh *Header) Set(t Tag, value string) error {
  	switch t {
  	case versionTag:
  		if value == "" {
  			return errBadHeader
  		}
  		bh.Version = value
  	case sortOrderTag:
  		if value == "" {
  			bh.SortOrder = UnknownOrder
  			return nil
  		}
  		sortOrder, ok := sortOrderMap[value]
  		if !ok {
  			return errBadHeader
  		}
  		bh.SortOrder = sortOrder
  	case groupOrderTag:
  		if value == "" {
  			bh.GroupOrder = GroupUnspecified
  			return nil
  		}
  		groupOrder, ok := groupOrderMap[value]
  		if !ok {
  			return errBadHeader
  		}
  		bh.GroupOrder = groupOrder
  	default:
  		if value == "" {
  			for i, tp := range bh.otherTags {
  				if t == tp.tag {
  					copy(bh.otherTags[i:], bh.otherTags[i+1:])
  					bh.otherTags = bh.otherTags[:len(bh.otherTags)-1]
  					return nil
  				}
  			}
  		} else {
  			for i, tp := range bh.otherTags {
  				if t == tp.tag {
  					bh.otherTags[i].value = value
  					return nil
  				}
  			}
  			bh.otherTags = append(bh.otherTags, tagPair{tag: t, value: value})
  		}
  	}
  	return nil
  }
docs: // Set sets the value associated with the given header line tag to the specified
  // value. If value is the empty string and the tag may be absent, it is deleted
  // or set to a meaningful default (SO:UnknownOrder and GO:GroupUnspecified),
  // otherwise an error is returned.