code: func (s *Semaphore) addHolder(h string) error {
  	loc := sort.SearchStrings(s.Holders, h)
  	switch {
  	case loc == len(s.Holders):
  		s.Holders = append(s.Holders, h)
  	case s.Holders[loc] == h:
  		return ErrExist
  	default:
  		s.Holders = append(s.Holders[:loc], append([]string{h}, s.Holders[loc:]...)...)
  	}
  
  	return nil
  }
docs: // addHolder adds a holder with id h to the list of holders in the semaphore
  // it returns ErrExist if the given id is in the list