anchor.diff:    int _preview;
   
     _ChartState({
  +    this.supportColumnSelection: true,
  +    this.supportColumnPreview: true,
  +    this.supportValueHighlight: true,
  +    this.supportValueHover: true,
       this.isMultiSelect: false,
       this.isMultiHighlight: false,
       this.isSelectOrHighlight: true});
   
     set hovered(Pair<int,int> value) {
  +    if (!this.supportValueHover) return null;
       if (value != _hovered) {
         _hovered = value;
         notifyChange(new ChartHoverChangeRecord(_hovered));
  
positive.code:   bool isVisible(int id) => !hidden.contains(id);
  
    bool select(int id) {
      if (!selection.contains(id)) {
        if (!isMultiSelect) {
          selection.clear();
  
negative.code:   bool isSelected(int id) => selection.contains(id);
  
    bool highlight(int column, int row) {
      if (!this.supportValueHighlight) return false;
      if (!isHighlighted(column, row)) {
        if (!isMultiHighlight) {
          highlights.clear();
  