In reply to srbeeram:
When call start() on a sequence, you have two choices.
You can provide a handle to a sequencer, and the sequence handle gets placed on the sequencer's queue. When the sequencer is ready to run the sequence, it calls the body() method of the sequence.
If you provide no handle (or the null handle) to the sequence start() method, the sequence calls the body() method of the sequence directly. This is what's sometimes called a virtual sequence. The body method can only start other sequences.
Only sequence body()s called by sequencers can call start_item()/finish_item()