Is there a specific reason you are creating a specialized sequencer instead of using the generic uvm_sequencer? Also, is there a specific reason you are trying to declare p_sequencer?
For portability and reuse, it is recommended to just use the uvm_object_utils() macro in a sequence and not use the
uvm_declare_p_sequencer() macro. Additionally, you should instantiate a parameterized uvm_sequencer in your agent instead of creating a new component.