Grab and ungrab returning to next line in virtual sequence

UVM grab and ungrab returning to next line in virtual sequence

=======================================================================
Virtual sequence 1 (vseq1)
non-virtual nvseq1
non-virtual nvseq2
end virtual sequence

Virtual sequence 2 (vseq2)
grab p_sequencer
non-virtual nvseq1
ungrab p_sequencer
end virtual sequence

Expected order of execution

  1. vseq1.nvseq1 is half way
  2. vseq2 grabs sequencer (vseq1.nvseq1 half completed and suspended)
  3. vseq2 ungrabs sequencer
  4. vseq1.nvseq1 resumes
    =======================================================================
    Actual order in simulation
  5. vseq1.nvseq1 is half way
  6. vseq2 grabs sequencer (vseq1.nvseq1 half completed and suspended)
  7. vseq2 ungrabs sequencer
  8. vseq1.nvseq2 resumes

It seems after ungrab, sequencer picks next line in virtual sequence. it discards non-virtual sequence which was yet to execute.
How do we make sequencer to return to a line within non-virtual sequence.