code: func (dm *DRWMutex) RUnlock() {
  
  	// create temp array on stack
  	locks := make([]string, dm.clnt.dNodeCount)
  
  	{
  		dm.m.Lock()
  		defer dm.m.Unlock()
  		if len(dm.readersLocks) == 0 {
  			panic("Trying to RUnlock() while no RLock() is active")
  		}
  		// Copy out first element to release it first (FIFO)
  		copy(locks, dm.readersLocks[0][:])
  		// Drop first element from array
  		dm.readersLocks = dm.readersLocks[1:]
  	}
  
  	isReadLock := true
  	unlock(dm.clnt, locks, dm.Name, isReadLock)
  }
docs: // RUnlock releases a read lock held on dm.
  //
  // It is a run-time error if dm is not locked on entry to RUnlock.