Clarification on sequence execution flow UVM cookbook figure

I believe the dashed lines point to the code flow.

(1) get_next_item() leads to Sequencer arbitration.

(2) Once a sequence is selected, start_item in the respective sequence would unblock and the code following start_item executes till it reaches finish_item.

(3) Call to finish_item(), unblocks get_next_item() in the driver and then the code in the driver executes ( indicated by dotted lines ) till it reaches item_done(). finish_item() unblocks once item_done() is called.

Also if I recollect correctly code flow post item_done() continues till it blocks in driver ( eg: call to next get_next_item() ). This is when finish_item() unblocks to be precise