docs: function (source) {
    if (false === (this instanceof List)) throw new Error('new operator required');
    if (source instanceof Model) {
      this.model = source;
    } else if (source instanceof View) {
      this.view = source;
      this.model = this.view.primaryModel;
    } else {
      throw new Error('argument required: model');
    }
    this.attributes = source.attributes;
    this._items = [];
    this._itemIndex = -1;
  }