docs: function(buffer) {
          // If not invoked via a triple-mustache ({{{foo}}}), escape
          // the content of the template.
          var escape = get(this, 'isEscaped');
  
          var shouldDisplay = get(this, 'shouldDisplayFunc');
          var preserveContext = get(this, 'preserveContext');
          var context = get(this, 'previousContext');
  
          var inverseTemplate = get(this, 'inverseTemplate');
          var displayTemplate = get(this, 'displayTemplate');
  
          var result = this.normalizedValue();
  
          this._lastNormalizedValue = result;
  
          // First, test the conditional to see if we should
          // render the template or not.
          if (shouldDisplay(result)) {
            set(this, 'template', displayTemplate);
  
            // If we are preserving the context (for example, if this
            // is an #if block, call the template with the same object.
            if (preserveContext) {
              set(this, '_context', context);
            } else {
            // Otherwise, determine if this is a block bind or not.
            // If so, pass the specified object to the template
              if (displayTemplate) {
                set(this, '_context', result);
              } else {
              // This is not a bind block, just push the result of the
              // expression to the render context and return.
                if (result === null || result === undefined) {
                  result = "";
                } else if (!(result instanceof SafeString)) {
                  result = String(result);
                }
  
                if (escape) { result = Handlebars.Utils.escapeExpression(result); }
                buffer.push(result);
                return;
              }
            }
          } else if (inverseTemplate) {
            set(this, 'template', inverseTemplate);
  
            if (preserveContext) {
              set(this, '_context', context);
            } else {
              set(this, '_context', result);
            }
          } else {
            set(this, 'template', function() { return ''; });
          }
  
          return this._super(buffer);
        }