code: public boolean doSyncPass() {
      if (!this.isConfigured || !syncLock.tryLock()) {
        return false;
      }
      try {
        if (logicalT == Long.MAX_VALUE) {
          if (logger.isInfoEnabled()) {
            logger.info("reached max logical time; resetting back to 0");
          }
          logicalT = 0;
        }
        logicalT++;
  
        if (logger.isInfoEnabled()) {
          logger.info(String.format(
              Locale.US,
              "t='%d': doSyncPass START",
              logicalT));
        }
        if (networkMonitor == null || !networkMonitor.isConnected()) {
          if (logger.isInfoEnabled()) {
            logger.info(String.format(
                Locale.US,
                "t='%d': doSyncPass END - Network disconnected",
                logicalT));
          }
          return false;
        }
        if (authMonitor == null || !authMonitor.tryIsLoggedIn()) {
          if (logger.isInfoEnabled()) {
            logger.info(String.format(
                Locale.US,
                "t='%d': doSyncPass END - Logged out",
                logicalT));
          }
          return false;
        }
  
        syncRemoteToLocal();
        syncLocalToRemote();
  
        if (logger.isInfoEnabled()) {
          logger.info(String.format(
              Locale.US,
              "t='%d': doSyncPass END",
              logicalT));
        }
      } catch (InterruptedException e) {
        if (logger.isInfoEnabled()) {
          logger.info(String.format(
              Locale.US,
              "t='%d': doSyncPass INTERRUPTED",
              logicalT));
        }
        return false;
      } finally {
        syncLock.unlock();
      }
      return true;
    }
docs: Performs a single synchronization pass in both the local and remote directions; the order
  of which does not matter. If switching the order produces different results after one pass,
  then there is a bug.
  
  @return whether or not the synchronization pass was successful.