code: func (l *Lock) Unlock() error {
  	return l.store(func(sem *Semaphore) error {
  		return sem.Unlock(l.id)
  	})
  }
docs: // Unlock removes this lock id as a holder of the semaphore
  // it returns an error if there is a problem getting or setting the semaphore,
  // or if this lock is not locked.