code: @Private
    ProjectSettings getSettings() {
      ProjectSettings cachedSettings = projectSettingsCache.get();
      if (isNullOrEmpty(cachedSettings)) {
        return downloadSettings();
      }
  
      long expirationTime = cachedSettings.timestamp() + SETTINGS_REFRESH_INTERVAL;
      if (expirationTime > System.currentTimeMillis()) {
        return cachedSettings;
      }
  
      ProjectSettings downloadedSettings = downloadSettings();
      if (isNullOrEmpty(downloadedSettings)) {
        return cachedSettings;
      }
      return downloadedSettings;
    }
docs: Retrieve settings from the cache or the network: 1. If the cache is empty, fetch new settings.
  2. If the cache is not stale, use it. 2. If the cache is stale, try to get new settings.