Generics, allow return multiple subclasses from method call that returns `self` - only works in an assignment to a variable, a type switch is generated in the caller, and the function body is branched from that point.