code: func NewEtcdLockClient(keyapi KeysAPI, group string) (*EtcdLockClient, error) {
  	key := SemaphorePrefix
  	if group != "" {
  		key = path.Join(keyPrefix, groupBranch, url.QueryEscape(group), semaphoreBranch)
  	}
  
  	elc := &EtcdLockClient{keyapi, key}
  	if err := elc.Init(); err != nil {
  		return nil, err
  	}
  
  	return elc, nil
  }
docs: // NewEtcdLockClient creates a new EtcdLockClient. The group parameter defines
  // the etcd key path in which the client will manipulate the semaphore. If the
  // group is the empty string, the default semaphore will be used.