private void updateTiles() {
    if (getPageIndex() == INITIAL_PAGE_INDEX) {
      LOGGER.debug("Page has not been initialized yet - skipping updates of tiles");
      return;
    }
    // remove any preexisting tiles in the list
    LOGGER.debug(String.format("Tiles in page %s are being updated", getPageIndex()));
    tiles.clear();
    LOGGER.trace(String.format("Page Index: %s, Modules Per Page: %s", getPageIndex(),
        workbench.getModulesPerPage()));
    int position = getPageIndex() * workbench.getModulesPerPage();
    modules.stream()
        .skip(position) // skip all tiles from previous pages
        .limit(workbench.getModulesPerPage()) // only take as many tiles as there are per page
        .map(module -> {
          // create tile
          Tile tile = workbench.getTileFactory().call(workbench);
          tile.setModule(module);
          return tile;
        })
        .map(Tile.class::cast)
        .forEachOrdered(tiles::add);
  }
Constructs a new {@link Tab}.

@param workbench which created this {@link Tab}
workbenchfx-core/src/main/java/com/dlsc/workbenchfx/view/controls/module/Page.java