"Type alias declaration. While type aliases are erased (substituted for what they alias is a better term) from every declaration that uses them during compile-time, the declaration of the type alias is still visible at run-time." shared sealed interface AliasDeclaration satisfies NestableDeclaration & GenericDeclaration { "The open type that is substituted by this type alias." shared formal OpenType extendedType; /* FIXME: this is too shaky WRT member types, we'll figure it out later shared formal AppliedType<Type> apply<Type=Anything>(AppliedType<Anything>* typeArguments); shared formal AppliedType<Type> & Member<Container, AppliedType<Type> & Model> memberApply<Container=Nothing, Type=Anything>(AppliedType<Container> containerType, AppliedType<Anything>* typeArguments); */ }