docs: function handleDescription(description, element, parent, spaces, marker) {
    const elementName = element.element;
    let str = '';
  
    // This flag determines when to use a block description within a list entry
    // instead of just ending the list entry line with the description. This
    // means that some other special values like `+ Properties` will get used
    // later during rendering.
    let useLongDescription = false;
    if (element.attributes &&
        (element.attributes.default !== undefined ||
         element.attributes.sample !== undefined)) {
      useLongDescription = true;
    }
  
    // Finally, an optional description
    if (description) {
      if (description.indexOf('\n') !== -1) {
        // Multiline description, so we can't use the short form!
        useLongDescription = true;
      }
  
      if (useLongDescription) {
        str += `\n${description}`;
      } else {
        str += ` - ${description}`;
      }
    }
  
    // Handle special list items like default/sample here as they are part
    // of the description, before the content (sub-elements) are rendere.
    const defaultValue = element.attributes &&
                         element.attributes.getValue('default');
    if (defaultValue !== undefined) {
      str += `\n${marker} Default: ${defaultValue}\n`;
    }
  
    const sampleValue = element.attributes &&
                        element.attributes.getValue('sample');
    if (sampleValue !== undefined) {
      str += `\n${marker} Sample: ${sampleValue}\n`;
    }
  
    // Now, depending on the content type, we will recursively handle child
    // elements within objects and arrays.
    if (element.content && element.content.length) {
      str += '\n';
  
      if (!parent) {
        // No parent implies a data structure or attribute definition, so
        // buffer it with an extra space.
        str += '\n';
      }
  
      const [renderedContent, objectLike] = handleContent(element, spaces, marker);
  
      if (!useLongDescription) {
        str += renderedContent;
      } else if (renderedContent.length) {
        // There is rendered content
        if (objectLike) {
          str += `\n${marker} Properties\n`;
        } else if (elementName === 'enum') {
          // An enum is a special case where the content is a list
          // but you use `Members` rather than `Items`.
          str += `\n${marker} Members\n`;
        } else {
          str += `\n${marker} Items\n`;
        }
  
        str += indent(renderedContent, spaces, {first: true});
      }
    }
  
    return str;
  }