code: public JobInformationRecorder withWriteBatcher(DataMovementManager dataMovementManager, WriteBatcher writeBatcher) {
      if(sourceBatcher.isStarted()) throw new IllegalStateException("Configuration cannot be changed after startJob has been called");
      this.writeBatcher = writeBatcher;
      this.dataMovementManager = dataMovementManager;
      this.client = writeBatcher.getPrimaryClient();
      this.dataMovementManager.startJob(this.writeBatcher);
      return this;
    }
docs: Sets the WriteBatcher object which should be used for writing the job information. This
  overrides the internal WriteBatcher object created by default.
  
  @param writeBatcher The WriteBatcher object with which we should write the job information.
  @return this object for chaining