In reply to Jung Ik Moon:
If you provide sequence in parent argument, current sequence is child of parent sequence.
If you have any parent sequence contains user define call backs pre_do,mid_do or/and post_do.
And then you pass that sequence as argument of "parent".
Then pre_do,mid_do and post_do method of parent sequence is executed during execution of current sequence.
If you not provide parent argument ( null ) sequence is considered as root parent sequence.
If you provide ( this ), it will execute pre_do,mid_do and post_do of current sequence.
If you have not defined pre_do, mid_do and post_do user define callback explicitly.
It will do nothing, because by default it is empty method inside uvm_sequence_base.