Hidden arguments when calling sub-sequence's task

In reply to dave_59:

Hi Dave,

Thanks for your explanation!

However, I am still having the following confusions,
1)

The this.cpu_seq argument is an implicit this argument for non-static methods

I have gone through the link you provided, but I wonder since I have created the object cpu_seq, why my calling to cpu_seq.cpu_write is still considered as

Accessing non-static members (see 8.9) or virtual methods (see 8.20) via a null object handle

?

Besides, my sequence implementation followed the example provided in UVM Cookbook Sequences/Hierarchy
I wonder does the example write.write used in Worker Sequence on that page also runs to the potential danger of accessing non-static members via null object handle?

You are allowed to mix positional arguments with name binding arguments, but once you switch to name binding, you cannot switch back to positional

In my task calling, I think there is no switch back to positional argument passing, so I wonder why I am having the argument passing error?

cpu_seq.cpu_write(.addr(30'h3552c000),.data('h3),.parent(this),.self_start(1),.seqr(cpu_msqr));

Thanks for your help!

Hao