code: function(content, start, removed, added) {
          var addedViews = [];
          var view, item, idx, len, itemViewClass, emptyView;
  
          len = content ? get(content, 'length') : 0;
  
          if (len) {
            itemViewClass = get(this, 'itemViewClass');
            itemViewClass = handlebarsGetView(content, itemViewClass, this.container);
  
            for (idx = start; idx < start+added; idx++) {
              item = content.objectAt(idx);
  
              view = this.createChildView(itemViewClass, {
                content: item,
                contentIndex: idx
              });
  
              addedViews.push(view);
            }
          } else {
            emptyView = get(this, 'emptyView');
  
            if (!emptyView) { return; }
  
            if ('string' === typeof emptyView && isGlobalPath(emptyView)) {
              emptyView = get(emptyView) || emptyView;
            }
  
            emptyView = this.createChildView(emptyView);
            addedViews.push(emptyView);
            set(this, 'emptyView', emptyView);
  
            if (CoreView.detect(emptyView)) {
              this._createdEmptyView = emptyView;
            }
          }
  
          this.replace(start, 0, addedViews);
        }
docs: Called when a mutation to the underlying content array occurs.
  
  This method will replay that mutation against the views that compose the
  `Ember.CollectionView`, ensuring that the view reflects the model.
  
  This array observer is added in `contentDidChange`.
  
  @method arrayDidChange
  @param {Array} content the managed collection of objects
  @param {Number} start the index at which the changes occurred
  @param {Number} removed number of object removed from content
  @param {Number} added number of object added to content