docs: public SessionInfo waitForUnlockAndLock(Object bookmark, SessionInfo sessionInfo, int iTimeToWait)
      {
          Utility.getLogger().info("Wait for unlock: " + bookmark + ", Session: " + sessionInfo.m_iSessionID);
          try {
          	synchronized (sessionInfo)
          	{
                  if (!this.containsKey(bookmark))
                      return null; // Was unlocked between sync calls
                  this.getWaitlist(bookmark, true).add(sessionInfo);
          		sessionInfo.wait(iTimeToWait);  // Wait to be unlocked
          		// If the timeout is reached, The next line will return the session of the hog who has the lock
                  return this.addLock(bookmark, sessionInfo); // Was unlocked between sync calls
          	}
          } catch (InterruptedException ex)  {
              ex.printStackTrace();   // Never
          }
          return null;	// Error
      }