code: function normalize_texts(texts) {
    let ret = []
  
    let content = []
    let cur_text = texts[0] // Holds the styles in this group of texts
  
    for (const text of texts) {
      if (text.bold !== cur_text.bold
          || text.italic !== cur_text.italic
          || text.underline !== cur_text.underline
          || text.href !== cur_text.href) {
        ret.push(new Text(
          content.join(''),
          cur_text.bold,
          cur_text.italic,
          cur_text.underline,
          cur_text.href
        ))
        cur_text = text
        content = []
      }
  
      content.push(text.text)
    }
  
    // content is non-empty: texts is never empty
    ret.push(new Text(
      content.join(''),
      cur_text.bold,
      cur_text.italic,
      cur_text.underline,
      cur_text.href
    ))
  
    return ret
  }
docs: Takes in an Array of texts; outputs an array in which identically-styled texts are merged together.  This makes a big difference: colors and fonts will create new <span>s in Google Docs HTML, and we don't want them in our final HTML.