anchor.diff:    List<async.StreamSubscription> _subscriptions = [];
     Map<int,bool>_selectedRowsLookup = {};
     CheckboxSelectColumn({String id: '_checkbox_selector', String cssClass,
  -                       toolTip: 'Select/Deselect All', int width: 30,
  -Formatter formatter})
  +                       toolTip: 'Select/Deselect All', int width: 30})
     : super(id: id, cssClass: cssClass, toolTip: toolTip, width: width,
         name: 'Column selector', nameElement: new dom.CheckboxInputElement() , field: 'sel', resizable: false,
         sortable: false) {
       if(formatter != null) {
         this.formatter = formatter;
       } else {
  -      this.formatter = new CheckboxSelectionFormatter(_selectedRowsLookup);
  +      this.formatter = new CheckboxSelectionFormatter(this);
       }
     }
   
  
positive.code: 
    void handleClick(core.Click e) {
      // clicking on a row select checkbox
      if (_grid.getColumns[e.cell.cell].id == id && e.causedBy.target is dom.CheckboxInputElement) {
        // if editing, try to commit
        if (_grid.getEditorLock.isActive && !_grid.getEditorLock.commitCurrentEdit()) {
          e.preventDefault();
  
negative.code: 
  
  class CheckboxSelectionFormatter extends Formatter {
    final CheckboxSelectColumn selectColumn;
    CheckboxSelectionFormatter(this.selectColumn) {
      assert(selectColumn != null);
    }
  
    /// The added element (click target) must have the `selectColumn` attribute set
    /// to be recognized by the [CheckboxSelectColumn] click handler.
    @override
    void call(dom.HtmlElement target, int row, int cell, dynamic value, Column columnDef, DataItem dataContext) {
      target.children.clear();
  
      if (dataContext != null) {
        target.append(new dom.CheckboxInputElement()
          ..checked = selectColumn.isRowSelected(row)
          ..attributes['selectColumn']='true');
      }
    }
  }
  