remove (idOrRecord, opts) {
    // Default values for arguments
    opts || (opts = {})
    this.beforeRemove(idOrRecord, opts)
    let record = utils.isSorN(idOrRecord) ? this.get(idOrRecord) : idOrRecord

    // The record is in the collection, remove it
    if (utils.isObject(record)) {
      record = this.index.removeRecord(record)
      if (record) {
        utils.forOwn(this.indexes, function (index, name) {
          index.removeRecord(record)
        })
        if (utils.isFunction(record.off)) {
          record.off('all', this._onRecordEvent, this)
        }
        if (!opts.silent) {
          this.emit('remove', record)
        }
      }
    }
    return this.afterRemove(idOrRecord, opts, record) || record
  }
Remove the record with the given id from this Collection.

@method Collection#remove
@since 3.0.0
@param {(string|number|object|Record)} idOrRecord The primary key of the
record to be removed, or a reference to the record that is to be removed.
@param {object} [opts] Configuration options.
@returns {Object|Record} The removed record, if any.