Understanding Subclass Instances in Swift Why Can You Assign to a Generic Type