protected addColumns(columns: Column[]) {
     if (this.gridOptionsWrapper.isFunctionsPassive()) {
         this.eventService.dispatchEvent(Events.EVENT_COLUMN_VALUE_ADD_REQUEST, {columns: columns} );
     } else {
         this.columnController.addValueColumns(columns);
     }
 }
 protected addColumns(columns: Column[]) {
     if (this.gridOptionsWrapper.isRowGroupPassive()) {
         this.eventService.dispatchEvent(Events.EVENT_COLUMN_PIVOT_ADD_REQUEST, {columns: columns} );
     } else {
         this.columnController.addPivotColumns(columns);
     }
 }
 protected removeColumns(columns: Column[]): void {
     if (this.gridOptionsWrapper.isFunctionsPassive()) {
         this.eventService.dispatchEvent(Events.EVENT_COLUMN_VALUE_REMOVE_REQUEST, {columns: columns} );
     } else {
         var columnsCurrentlyValueColumns = Utils.filter(columns, (column: Column) => column.isValueActive() );
         this.columnController.removeValueColumns(columnsCurrentlyValueColumns);
     }
 }
 protected removeColumns(columns: Column[]): void {
     if (this.gridOptionsWrapper.isFunctionsPassive()) {
         this.eventService.dispatchEvent(Events.EVENT_COLUMN_PIVOT_REMOVE_REQUEST, {columns: columns} );
     } else {
         var columnsPivoted = Utils.filter(columns, (column: Column) => column.isPivotActive() );
         this.columnController.removePivotColumns(columnsPivoted);
     }
 }
 protected removeColumns(columns: Column[]) {
     if (this.gridOptionsWrapper.isRowGroupPassive()) {
         this.eventService.dispatchEvent(Events.EVENT_COLUMN_ROW_GROUP_REMOVE_REQUEST, {columns: columns} );
     } else {
         // this panel only allows dragging columns (not column groups) so we are guaranteed
         // the dragItem is a column
         var rowGroupColumns = this.columnController.getRowGroupColumns();
         columns.forEach( column => {
             var columnIsGrouped = rowGroupColumns.indexOf(column) >= 0;
             if (columnIsGrouped) {
                 this.columnController.removeRowGroupColumn(column);
                 this.columnController.setColumnVisible(column, true);
             }
         });
     }
 }