The keyword Self
inside a class is not a generic parameter, it is its own special thing primarily meant for Objective-C interoperability (it’s spelled instancetype
there). It is always the dynamic type of the instance and not the static type at the call site.