Wrote the following little test:
class Model { }
class SubModel : Model {}
class Collection<T: Model> {}
let collection = Collection<SubModel>()
var collections = [Collection]() // Also tried [Collection<Model>]()
collections.append(collection)
The compiler fails on the append call. The message is: 'SubModel' is not identical to 'Model'. Based on my experience in all other languages I have used with generics, this should work. As a Collection of type SubMode should always be coercible to a Collection of type Model. Anyone run into this? Workarounds?