In simple terms it's a UVM sequencer that contain handles to other sequencers. Why do we need this ? Because we plan to use virtual sequences and want to have control over all sequencers from a central place. A request type is not required here because this sequencer is generic and not limited to handle only one particular data type.
class my_virtual_sequencer extendsuvm_sequencer;`uvm_component_utils(my_virtual_sequencer)functionnew(string name ="my_virtual_sequencer",uvm_component parent);super.new(name, parent);endfunction// Declare handles to other sequencers here