code: func (cb *CellBuffer) Dirty(x, y int) bool {
  	if x >= 0 && y >= 0 && x < cb.w && y < cb.h {
  		c := &cb.cells[(y*cb.w)+x]
  		if c.lastMain == rune(0) {
  			return true
  		}
  		if c.lastMain != c.currMain {
  			return true
  		}
  		if c.lastStyle != c.currStyle {
  			return true
  		}
  		if len(c.lastComb) != len(c.currComb) {
  			return true
  		}
  		for i := range c.lastComb {
  			if c.lastComb[i] != c.currComb[i] {
  				return true
  			}
  		}
  	}
  	return false
  }
docs: // Dirty checks if a character at the given location needs an
  // to be refreshed on the physical display.  This returns true
  // if the cell content is different since the last time it was
  // marked clean.