code: func (bh *Header) RemoveProgram(p *Program) error {
  	if p.id < 0 || int(p.id) >= len(bh.progs) || bh.progs[p.id] != p {
  		return errInvalidProgram
  	}
  	bh.progs = append(bh.progs[:p.id], bh.progs[p.id+1:]...)
  	for i := range bh.progs[p.id:] {
  		bh.progs[i+int(p.id)].id--
  	}
  	p.id = -1
  	delete(bh.seenProgs, p.uid)
  	return nil
  }
docs: // RemoveProgram removes p from the Header and makes it
  // available to add to another Header.