type 'this' is covariant with
if not null, store STCxxxx which would make it covariant
0 types are distinct 1 this is covariant with t 2 arguments match as far as overloading goes, but types are not covariant 3 cannot determine covariance because of forward references *pstc STCxxxx which would make it covariant
Covariant means that 'this' can substitute for 't', i.e. a pure function is a match for an impure type.