code: func (p *Program) Set(t Tag, value string) error {
  	switch t {
  	case idTag:
  		if value == "" {
  			return errDupProgram
  		}
  	case programNameTag:
  		p.name = value
  	case commandLineTag:
  		p.command = value
  	case previousProgTag:
  		p.previous = value
  	case versionTag:
  		p.version = value
  	default:
  		if value == "" {
  			for i, tp := range p.otherTags {
  				if t == tp.tag {
  					copy(p.otherTags[i:], p.otherTags[i+1:])
  					p.otherTags = p.otherTags[:len(p.otherTags)-1]
  					return nil
  				}
  			}
  		} else {
  			for i, tp := range p.otherTags {
  				if t == tp.tag {
  					p.otherTags[i].value = value
  					return nil
  				}
  			}
  			p.otherTags = append(p.otherTags, tagPair{tag: t, value: value})
  		}
  	}
  	return nil
  }
docs: // Set sets the value associated with the given program line tag to the specified
  // value. If value is the empty string and the tag may be absent, it is deleted.