docs: function () {
      var childViews, childViewCount,
          numberOfChildViews, numberOfChildViewsNeeded,
          contentIndex, startingIndex, endingIndex,
          contentLength, emptyView, count, delta;
  
      if (this.isDestroyed || this.isDestroying) {
        return;
      }
  
      contentLength = get(this, 'content.length');
      emptyView = get(this, 'emptyView');
  
      childViewCount = this._childViewCount();
      childViews = this.positionOrderedChildViews();
  
      if (this._isChildEmptyView()) {
        removeEmptyView.call(this);
      }
  
      startingIndex = this._startingIndex();
      endingIndex = startingIndex + childViewCount;
  
      numberOfChildViewsNeeded = childViewCount;
      numberOfChildViews = childViews.length;
  
      delta = numberOfChildViewsNeeded - numberOfChildViews;
  
      if (delta === 0) {
        // no change
      } else if (delta > 0) {
        // more views are needed
        contentIndex = this._lastEndingIndex;
  
        for (count = 0; count < delta; count++, contentIndex++) {
          this._addItemView(contentIndex);
        }
      } else {
        // less views are needed
        forEach.call(
          childViews.splice(numberOfChildViewsNeeded, numberOfChildViews),
          removeAndDestroy,
          this
        );
      }
  
      this._reuseChildren();
  
      this._lastStartingIndex = startingIndex;
      this._lastEndingIndex   = this._lastEndingIndex + delta;
  
      if (contentLength === 0 || contentLength === undefined) {
        addEmptyView.call(this);
      }
    }