Uvm sequencer

What is the difference between m_sequencer and p_sequncer?

m_sequencer is the pointer to the generic sequencer base class, uvm_sequencer_base. p_sequencer is a handle to user defined sequencer class. m_sequencer always exists while running a sequence. p_sequencer will only exist if we declare it using the macro.

Here is a post in which tries to explain the difference between the two. Difference between m_sequencer and p_sequencer.