code: function(parentBuffer, bufferOperation) {
      var buffer;
  
      Ember.run.sync();
  
      // Determine where in the parent buffer to start the new buffer.
      // By default, a new buffer will be appended to the parent buffer.
      // The buffer operation may be changed if the child views array is
      // mutated by Ember.ContainerView.
      bufferOperation = bufferOperation || 'begin';
  
      // If this is the top-most view, start a new buffer. Otherwise,
      // create a new buffer relative to the original using the
      // provided buffer operation (for example, `insertAfter` will
      // insert a new buffer after the "parent buffer").
      if (parentBuffer) {
        var tagName = get(this, 'tagName');
        if (tagName === null || tagName === undefined) {
          tagName = 'div';
        }
  
        buffer = parentBuffer[bufferOperation](tagName);
      } else {
        buffer = this.renderBuffer();
      }
  
      this.buffer = buffer;
      this.transitionTo('inBuffer', false);
  
      this.lengthBeforeRender = this._childViews.length;
  
      this.beforeRender(buffer);
      this.render(buffer);
      this.afterRender(buffer);
  
      this.lengthAfterRender = this._childViews.length;
  
      return buffer;
    }
docs: @private
  
  Invoked by the view system when this view needs to produce an HTML
  representation. This method will create a new render buffer, if needed,
  then apply any default attributes, such as class names and visibility.
  Finally, the `render()` method is invoked, which is responsible for
  doing the bulk of the rendering.
  
  You should not need to override this method; instead, implement the
  `template` property, or if you need more control, override the `render`
  method.
  
  @param {Ember.RenderBuffer} buffer the render buffer. If no buffer is
  passed, a default buffer, using the current view's `tagName`, will
  be used.