Generics: fixed when the generic has been forced to be of some subclass, and infact its another subclass type, when passed to a generic function, if the first switch case that switches on the struct name fails, then fallback to using a `switch X.(type)` to convert to the struct type that the Go compiler thinks it is, and then force it to be of the subclass type that was known by the first switch (the embedded struct name)