anchor.diff:    ColorPaletteCellElement oldCell;
     ColorPaletteCellElement newCell;
     String get oldColor => (oldCell == null) ? null : oldCell.color;
  -  String get newColor => newCell.color;
  +  String get newColor => (newCell == null) ? null : newCell.color;
     ColorChangeEvent(this.oldCell, this.newCell);
     @override
     String toString() => 'ColorChangeEvent(${oldColor} => ${newColor})';
  
positive.code:     changes.listen((records) {
        records
          .where((r) => (r is PropertyChangeRecord) && (r.name == #selectedCell))
          .forEach((r) =>
              _colorChangeController.add(new ColorChangeEvent(r.oldValue, r.newValue)));
      });
    }
  }
  
negative.code:       var target = event.element;
        if (!target.selected) return;
  
        // find and de-select the old selected cell
        ColorPaletteCellElement oldSelectedCell;
        _selectedCells.where((e) => e != target).forEach((e){
          oldSelectedCell = e;
          e.selected = false;
        });
  
        notifyPropertyChange(#selectedCell, oldSelectedCell, target);
      });
    }
  
  