"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);
*/
}