How to kill the sequence with sequence.kill() method

Hi ,

I want to kill one top sequence which internally has sub sequences which will run on different sequencer. I have tried to kill from top, but still the inner sequences are still running.

Here is the example.

class base_seq extends uvm_seq;
`uvm_declare_p_sequencer(A_sqr)

sub1_seq sub1seq;

virtual task body();
`uvm_do(sub1seq);
endtask
endclass

class sub1_seq extends uvm_seq2;
`uvm_declare_p_sequencer(B_sqr)
sub2_seq sub2seq;

virtual task body();
`uvm_do(sub2seq);
endtask
endclass

from top most class, here is the piece of code i used to kill the sequence.

class topseq extends topbaseseq;

`uvm_declare_p_sequencer(top_vir_seqr)

base_seq Baseseq;

virtual task body();
// starting Baseseq and checking some conditions and then i am trying to kill this seq like this.

// 1-st method
Baseseq.kill() // This is not working as i can see that some transfers are still going on from the internal sequnces
// After checking user guide i cam to know that if the sequencers are different that we have to use “unregister_sequence()” method
// But no example on this, so i have tried different methods to do the same.
// 2-nd method.
Baseseq.sub1seq.sub2seq.kill();
Baseseq.sub1seq.kill();
Baseseq.kill();

endtask

Is there anything wrong here, why this is not working here i am not clear.

can anyone explain me on this, also please explain me on unregister_sequence method.