def split
      # Determine the new max_id for the old page.
      max_id = @min_id + (@max_id - @min_id) / 2
      # Create a new page that stores the upper half of the ID range. Remove
      # all IDs from this page that now belong into the new page and transfer
      # them.
      new_page_record = IDListPageRecord.new(@page_file, max_id + 1, @max_id,
                                             page.delete(max_id))
      # Adjust the max_id of the current page.
      @max_id = max_id

      new_page_record
    end
def split
      # Determine the new max_id for the old page.
      max_id = @min_id + (@max_id - @min_id) / 2
      # Create a new page that stores the upper half of the ID range. Remove
      # all IDs from this page that now belong into the new page and transfer
      # them.
      new_page_record = IDListPageRecord.new(@page_file, max_id + 1, @max_id,
                                             page.delete(max_id))
      # Adjust the max_id of the current page.
      @max_id = max_id

      new_page_record
    end
Split the current page. This split is done by splitting the ID range in
 half. This page will keep the first half, the newly created page will
 get the second half. This may not actually yield an empty page as all
 values could remain with one of the pages. In this case further splits
 need to be issued by the caller.
 @return [IDListPageRecord] A new IDListPageRecord object.