code: func overlayStyle(background tcell.Color, defaultStyle tcell.Style, fgColor, bgColor, attributes string) tcell.Style {
  	defFg, defBg, defAttr := defaultStyle.Decompose()
  	style := defaultStyle.Background(background)
  
  	style = style.Foreground(defFg)
  	if fgColor != "" {
  		style = style.Foreground(tcell.GetColor(fgColor))
  	}
  
  	if bgColor == "-" || bgColor == "" && defBg != tcell.ColorDefault {
  		style = style.Background(defBg)
  	} else if bgColor != "" {
  		style = style.Background(tcell.GetColor(bgColor))
  	}
  
  	if attributes == "-" {
  		style = style.Bold(defAttr&tcell.AttrBold > 0)
  		style = style.Blink(defAttr&tcell.AttrBlink > 0)
  		style = style.Reverse(defAttr&tcell.AttrReverse > 0)
  		style = style.Underline(defAttr&tcell.AttrUnderline > 0)
  		style = style.Dim(defAttr&tcell.AttrDim > 0)
  	} else if attributes != "" {
  		style = style.Normal()
  		for _, flag := range attributes {
  			switch flag {
  			case 'l':
  				style = style.Blink(true)
  			case 'b':
  				style = style.Bold(true)
  			case 'd':
  				style = style.Dim(true)
  			case 'r':
  				style = style.Reverse(true)
  			case 'u':
  				style = style.Underline(true)
  			}
  		}
  	}
  
  	return style
  }
docs: // overlayStyle mixes a background color with a foreground color (fgColor),
  // a (possibly new) background color (bgColor), and style attributes, and
  // returns the resulting style. For a definition of the colors and attributes,
  // see styleFromTag(). Reset instructions cause the corresponding part of the
  // default style to be used.