code: func (l *AdvisoryLock) Unlock() error {
  	l.mu.Lock()
  	defer l.mu.Unlock()
  
  	if l.commited {
  		panic("unlock called on commited lock")
  	}
  
  	if l.c == 0 {
  		panic("unlock of unlocked advisory lock")
  	}
  
  	_, err := l.tx.Exec(fmt.Sprintf("SELECT pg_advisory_unlock($1) /* %s */", l.Context), l.key)
  	if err != nil {
  		return err
  	}
  
  	l.c -= 1
  
  	if l.c == 0 {
  		if err := l.commit(); err != nil {
  			return err
  		}
  	}
  
  	return err
  }
docs: // Unlock releases the advisory lock.