Allows optional type arguments
Aliased types
Allow aliases inside aliases