Grid Listener after Data Refresh (Vaadin 8)

Is there a possiblity to execute code after the grid data was refreshed ?
The use case is:
I have a Grid with Multiselection and Filtering enabled. If I do some selection and then filter the table, the selection will be removed and no item is selected anymore. So I wanted to recognize all selected items and after filtering I want to select these items programmatically.
The Grid doc says:
“If you change the grid’s items with setItems() or the used DataProvider, it will clear the selection and fire a selection event. To keep the previous selection you must reset the selection afterwards using the select() method.”
So my expectation was, that the MultiSelectionListener will be called, after the DataProvider (which is a CallBackDataProvider) refreshes the items. But at the moment there MultiSelectionListener will not be called.

Grid Settings:
MultiSelectionModel<StudentDTO> selectionModel = (MultiSelectionModel<StudentDTO>) studentsGrid.setSelectionMode(SelectionMode.MULTI);
selectionModel.addMultiSelectionListener(e -> select(e));

DataProvider:
DataProvider<StudentDTO, StudentFilter> dataProvider = DataProvider.fromFilteringCallbacks(
                // First callback fetches items based on a query
                query -> {
                    StudentFilter filter = query.getFilter().orElse(new StudentFilter());
                    for(QuerySortOrder sort : query.getSortOrders()) {
                        UISort s = new UISort();
                        s.setColumn(sort.getSorted());
                        s.setDirection(sort.getDirection() == SortDirection.ASCENDING ? SortType.ASC : SortType.DESC);
                        filter.getSorting().add(s);
                    }
                    // The index of the first item to load
                    int offset = query.getOffset();

                    int page = offset / this.itemsPerPage;

                    List<StudentDTO> ideas = this.studentService.getStudents(page, this.itemsPerPage, filter);
                    return ideas.stream();

                },
                // Second callback fetches the number of items for a query
                query -> {
                    StudentFilter filter = query.getFilter().orElse(new StudentFilter());
                    int count = (int) this.studentService.getStudentsAmount(filter);
                    return count;
        });

One approach worth of trying could be to call refreshAll() after items fetched and use addDataProviderListener(…) and do the reselection of the items there.

Hmm I have to cancel this request. It is working without any change. Sorry, maybe I tested wrong.
Now I can select rows, filter and select additional rows and after removing the filter, the first selected rows and the additional row are selected. This is what I want.