anchor.diff:  
   <%
       }
  -    int i = start;
  -    while (roomsPage.hasNext()) {
  -        String name = roomsPage.next();
  +    final List<String> itemsOnCurrentPage = listPager.getItemsOnCurrentPage();
  +    int i = listPager.getFirstItemNumberOnPage();
  +    for(String name : itemsOnCurrentPage) {
           MUCRoom room = mucService.getChatRoom(name); // This will load the room on-demand if it's not yet in memory.
           i++;
   %>
  
positive.code:         return;
      }
  
      if (request.getParameter("range") != null) {
          webManager.setRowsPerPage("muc-room-summary", range);
      }
  
      // Get the rooms in the server
  //    List<MUCRoom> rooms = mucService.getChatRooms();
      List<String> names = mucService.getAllRoomNames().stream().sorted(new Comparator<String>() {
          public int compare(String room1, String room2) {
              return room1.toLowerCase().compareTo(room2.toLowerCase());
          }
      } ).collect(Collectors.toList());
      int roomsCount = names.size();
  
      // paginator vars
      int numPages = (int)Math.ceil((double)roomsCount/(double)range);
      int curPage = (start/range) + 1;
      int maxRoomIndex = Math.min(start + range, roomsCount);
  %>
  <html>
      <head>
  
negative.code: </table>
  </div>
  
  <%  if (listPager.getTotalPages() > 1) { %>
          <p><fmt:message key="global.pages" />: [ <%=listPager.getPageLinks() %> ]</p>
  <%  } %>
  
      </body>
  