<div dir="ltr">I took some time to overview the whole idea in general, and I must say (surprisingly) that I don't support it myself.<div><br></div><div>* Metatypes are still in the language; it turned out that they *must* remain in the language</div><div>* The new primary `Type<T>` struct duplicates semantics and interface of metatypes</div><div>* But it cannot get extensive native support, so it uses `init?(casting:)` instead of `as` cast, `is(_:)` method instead of `is`, etc</div><div>* `Type<T>` does not add new possibilities right now, although the proposal promises to add reflection to `Type<T>` in the future</div><div>* `Mirror` already does reflection. It wraps `Any.Type` statically, which is a simpler and more suitable model for reflection</div><div><br></div><div>I started thinking in a completely different direction:</div><div><br></div><div>* Rename metatypes `T.Type` to `Type<T>`</div><div>* Rename `T.self` to `T`</div><div>* Allow `Type<Type<T>>`</div><div>* **Extend `Mirror`** for Swift 4</div><div><br></div><div>What do you think?</div></div>