Sequencer ,Driver why non virtual in uvm

In uvm Hierarchy which one is non-virtual class???

In reply to sriman:

You can exercise the UVM base class lib to find this out.

In reply to chr_sue:

Non-virtual uvm_sequencer:
You can directly use uvm_sequencer to connect to driver without adding extended functionality. Like,

typedef uvm_sequencer#(sequence_item) sequencer;

I don’t see any reason to write uvm_driver as non-abstract class. How would you use uvm_driver class object without extending any of its method?