code: private int getCurrentPageStartRow() {
  		int startRow = 0;
  
  		if (getPaginationMode() != PaginationMode.NONE) {
  			int rowsPerPage = getRowsPerPage();
  			TableDataModel model = getDataModel();
  
  			if (model instanceof TreeTableDataModel) {
  				// For tree tables, pagination only occurs on first-level nodes (ie. those
  				// underneath the root node), however they might not be consecutively
  				// numbered. Therefore, the start and end row indices need to be adjusted.
  				TreeTableDataModel treeModel = (TreeTableDataModel) model;
  				TreeNode root = treeModel.getNodeAtLine(0).getRoot();
  
  				int startNode = getCurrentPage() * rowsPerPage;
  				startRow = ((TableTreeNode) root.getChildAt(startNode)).getRowIndex() - 1; // -1 as the root is not included in the table
  			} else {
  				startRow = getCurrentPage() * rowsPerPage;
  			}
  		}
  
  		return startRow;
  	}
docs: Retrieves the starting row index for the current page. Will always return zero for tables which are not
  paginated.
  
  @return the starting row index for the current page.