code: @Override
      public synchronized void release() throws Exception
      {
          Exception       baseException = null;
  
          for ( InterProcessLock lock : reverse(locks) )
          {
              try
              {
                  lock.release();
              }
              catch ( Exception e )
              {
                  ThreadUtils.checkInterrupted(e);
                  if ( baseException == null )
                  {
                      baseException = e;
                  }
                  else
                  {
                      baseException = new Exception(baseException);
                  }
              }
          }
  
          if ( baseException != null )
          {
              throw baseException;
          }
      }
docs: {@inheritDoc}
  
  <p>NOTE: locks are released in the reverse order that they were acquired.</p>