docs: private final void pollHeartbeat()
      throws LockFile.FileSecurityException,
             LockFile.LockHeldExternallyException,
             LockFile.UnexpectedFileNotFoundException,
             LockFile.UnexpectedEndOfFileException,
             LockFile.UnexpectedFileIOException, LockFile.WrongLengthException,
             LockFile.WrongMagicException {
  
          boolean                success  = false;
          int                    retries  = getPollHeartbeatRetries();
          long                   interval = getPollHeartbeatInterval();
          LockFile.BaseException reason   = null;
  
          for (int i = retries; i > 0; i--) {
              try {
                  checkHeartbeat(true);    // withCreateNewFile == true
  
                  success = true;
  
                  break;
              } catch (LockFile.BaseException ex) {
                  reason = ex;
              }
  
              // We get here if and only if success == false and reason != null,
              // so its OK to 'break'
              try {
                  Thread.sleep(interval);
              } catch (InterruptedException ex) {
                  break;
              }
          }
  
          /**
           * @todo:
           * Do not want to specify just BaseException in the throws clause.
           * Is this really the cleanest way?
           */
          if (!success) {
              if (reason instanceof FileSecurityException) {
                  throw (FileSecurityException) reason;
              } else if (reason instanceof LockHeldExternallyException) {
                  throw (LockHeldExternallyException) reason;
              } else if (reason instanceof UnexpectedFileNotFoundException) {
                  throw (UnexpectedFileNotFoundException) reason;
              } else if (reason instanceof UnexpectedEndOfFileException) {
                  throw (UnexpectedEndOfFileException) reason;
              } else if (reason instanceof UnexpectedFileIOException) {
                  throw (UnexpectedFileIOException) reason;
              } else if (reason instanceof WrongLengthException) {
                  throw (WrongLengthException) reason;
              } else if (reason instanceof WrongMagicException) {
                  throw (WrongMagicException) reason;
              }
          }
      }