Who vends the item identifier and the index path arguments to the cell provider closure of a diffable data source?

I was reading over the documentation of the CellProvider struct for the diffable data source initialiser, and the CellProvider is defined as a closure which takes three arguments, a table view, an index path, and an item identifier. My question is, who vends the index path and the item identifier to this closure? My thinking is that it is the data source who vends these items because it adopts the UITableViewDataSource protocol which acts as the source of data for this view.

Who vends the item identifier and the index path arguments to the cell provider closure of a diffable data source?
 
 
Q