// This should get partly shuffled back into SyncConfiguration, I think.
 public void load(ConfigurationBranch config)
     throws NonObjectJSONException, IOException, ParseException {
   if (config == null) {
     throw new IllegalArgumentException("config cannot be null.");
   }
   String remoteJSON = config.getString("remote", null);
   String localJSON = config.getString("local", null);
   RepositorySessionBundle rB = new RepositorySessionBundle(remoteJSON);
   RepositorySessionBundle lB = new RepositorySessionBundle(localJSON);
   if (remoteJSON == null) {
     rB.setTimestamp(0);
   }
   if (localJSON == null) {
     lB.setTimestamp(0);
   }
   syncID = config.getString("syncID", null);
   remoteBundle = rB;
   localBundle = lB;
   Logger.debug(
       LOG_TAG,
       "Loaded SynchronizerConfiguration. syncID: "
           + syncID
           + ", remoteBundle: "
           + remoteBundle
           + ", localBundle: "
           + localBundle);
 }
  public void persist(ConfigurationBranch config) {
    if (config == null) {
      throw new IllegalArgumentException("config cannot be null.");
    }
    String jsonRemote = remoteBundle.toJSONString();
    String jsonLocal = localBundle.toJSONString();
    Editor editor = config.edit();
    editor.putString("remote", jsonRemote);
    editor.putString("local", jsonLocal);
    editor.putString("syncID", syncID);

    // Synchronous.
    editor.commit();
    Logger.debug(
        LOG_TAG,
        "Persisted SynchronizerConfiguration. syncID: "
            + syncID
            + ", remoteBundle: "
            + remoteBundle
            + ", localBundle: "
            + localBundle);
  }