startRecording(maxRecords) {
    maxRecords = maxRecords || Infinity;

    if (maxRecords < 1)
      throw makeError('Baobab.Cursor.startRecording: invalid max records.', {
        value: maxRecords
      });

    this.state.recording = true;

    if (this.archive)
      return this;

    // Lazy binding
    this._lazyBind();

    this.archive = new Archive(maxRecords);
    return this;
  }
Methods starting to record the cursor's successive states.

@param  {integer} [maxRecords] - Maximum records to keep in memory. Note
                                 that if no number is provided, the cursor
                                 will keep everything.
@return {Cursor}               - The cursor instance for chaining purposes.