For understanding factory usage

In reply to UVM_LOVE:

When you call

my_state1 = state::type_id::create("my_state1", null);

state is the original requested type. The create() method returns an object with the override type. Normally, the call to set_type_override_by_type() is in the top-level test, and the call to create() is in another class at a lower level.