Briefly:
1. Type aliases are equivalent to underlying types, and are fully expanded in JVM signatures.
2. Type aliases can be used as "constructors" and "companion objects" of the underlying classes.
3. There is some discussion regarding nested type aliases: whether
(3a) nested type aliases should be like nested classes (no "inheritance"),
or (3b) nested type aliases should support some form of static inheritance.
4. No clear understanding (as for now) of how reflection should treat type aliases.