anchor.diff:       // var menu = $menuButton.data("menu");
        // var columnDef = $menuButton.data("column");
         if(column.header.length==0) return;
  +      core.EventData ed=new core.EventData.fromDom(e);
         // Let the user modify the menu or cancel altogether,
         // or provide alternative menu implementation.
  -      List<MenuItem> menuList = column.header['menu']['items'].map((_) => new MenuItem(_)).toList() as List<MenuItem>;
  -      if (onBeforeMenuShow.notify({
  +      List<MenuItem> menuList = (column.header['menu']['items'] as List).map((_) => new MenuItem(_)).toList() as List<MenuItem>;
  +      if (onBeforeMenuShow.notify(<String,dynamic>{
             "grid": _grid,
             "column": column,
             "menu": menuList
  -        }, e) == false) {
  +        }, ed) == false) {
           return;
         }
   
  
positive.code:     });
    }
    String get title =>        _opt['title'];
    bool get disabled =>     _opt['disabled'];
    String get command =>      _opt['command'];
    String get iconCssClass => _opt['iconCssClass'];
    String get iconImage =>    _opt['iconImage'];
  
negative.code:   void set iconCssClass   (_) => _opt['iconCssClass']   = _;
    void set iconImage      (_) => _opt['iconImage']      = _;
    void set tooltip        (_) => _opt['tooltip']        = _;
   // set disabled       (bool _) => _opt['disabled']       = _;
  }
  