code: func (s *Semaphore) String() string {
  	b, _ := json.Marshal(s)
  	return string(b)
  }
docs: // String returns a json representation of the semaphore
  // if there is an error when marshalling the json, it is ignored and the empty
  // string is returned.