code: @InterfaceAudience.Public
      public void start() {
          if (replicationInternal == null) {
              initReplicationInternal();
          } else {
              if (replicationInternal.stateMachine.isInState(ReplicationState.INITIAL)) {
                  // great, it's ready to be started, nothing to do
              } else if (replicationInternal.stateMachine.isInState(ReplicationState.STOPPED)) {
                  // if there was a previous internal replication and it's in the STOPPED state, then
                  // start a fresh internal replication
                  initReplicationInternal();
              } else {
                  Log.w(Log.TAG_SYNC,
                          String.format(Locale.ENGLISH,
                                  "replicationInternal in unexpected state: %s, ignoring start()",
                                  replicationInternal.stateMachine.getState()));
              }
          }
  
          // following is for restarting replicator.
          // make sure both lastError and ReplicationInternal.error are null.
          this.lastError = null;
          replicationInternal.setError(null);
  
          replicationInternal.triggerStart();
      }
docs: Starts the replication, asynchronously.