public override TypeAlias VisitTypeAlias(TypeAlias tAlias)
{
if (tAlias == null) return null;
TypeAlias dup = (TypeAlias)this.DuplicateFor[tAlias.UniqueKey];
if (dup != null) return dup;
this.DuplicateFor[tAlias.UniqueKey] = dup = (TypeAlias)tAlias.Clone();
dup.Name = tAlias.Name;
if (tAlias.AliasedType is ConstrainedType)
//The type alias defines the constrained type, rather than just referencing it
dup.AliasedType = this.VisitConstrainedType((ConstrainedType)tAlias.AliasedType);
else
dup.AliasedType = this.VisitTypeReference(tAlias.AliasedType);
dup.DeclaringType = this.TargetType;
dup.DeclaringModule = this.TargetModule;
dup.ProvideMembers();
return dup;
}