Imagine the following scenario:
class Food {}
protocol Growable {}
class Animal<T: Food> {}
let animal1 = Animal<Food>() // Ok
let animal2 = Animal<Food & Growable>() // Compile error: 'Animal' requires that 'Food & Growable' inherit from 'Food'
Clearly, if we have a variable of type Food & Growable, this variable is also of type Food. Yet the generic Parameter T of the Animal class can't be specialized with the type Food & Growable. Why is that?