public string[] ParseQualification()
{
var qualifiers = new List<string>();
SerializedType[] typeArgs = null;
while (i < str.Length && !PeekAndDiscard('@'))
{
string name = ParseAtName();
if (name.StartsWith("?$"))
{
name = name.Substring(2);
namesSeen.Add(name);
var oldNames = namesSeen;
if (templateNamesSeen == null)
{
templateNamesSeen = new List<string> { name };
}
else
templateNamesSeen.Add(name);
namesSeen = templateNamesSeen;
typeArgs = ParseTemplateArguments().ToArray(); ///$TODO: what to do about these if they're nested?
namesSeen = oldNames;
}
else
{
namesSeen.Add(name);
}
qualifiers.Insert(0, name);
}
var tr = new TypeReference_v1
{
TypeName = qualifiers.Last(),
Scope = qualifiers.Take(qualifiers.Count - 1).ToArray(),
TypeArguments = typeArgs
};
return qualifiers.ToArray();
}