I have a concern. When the generic argument is a class, you can currently have two distinct extensions:
// Base and its subclasses
extension Foo where T: Base { ... }
// Base only
extension Foo where T == Base { ... }
What would extension Foo<Base> mean? What would be the syntax for the other one, then?