Finish_item argument in sequence body method

Found this in cookbook

repeat(10) begin
    $cast(req_item_c, req_item.clone); // Good practice to clone the req_item item
    start_item(req_item_c);
    req_item_c.randomize();
    finish_item(req_item_c); // Driver has returned REQ with the response fields updated
    `uvm_info("body", req_item_c.convert2string())
  end
endtask: body

My query is the comment after finish_item which signifies that writing an argument in finish_item will populate the sequence_item with response fields but isn’t finish item is the last point post which transaction is sent to driver via sequencer? As far as I know writing argument in item_done in driver will cause the response field update in sequence_item. Can someone clarify?

Tha call to finish_item() passes the handle of the sequence_item to the driver. The driver can manipulate the variables of the sequence_item as required (typically some response fields). When finish_item() completes, the sequence can then see the updated fields in the sequence_item.