public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
{
string key = string.Join(".", _currentNamespaces.ToArray().Reverse().Select(ns => ns.Item1));
if (key != "")
key += ".";
key += string.Join(".", _currentMembers.ToArray().Reverse().Select(m => m.Item1));
if (key != "" && key[key.Length - 1] != '.')
key += ".";
key += typeDeclaration.Name;
List<NameNode> nameNodes;
if (!TypesMembers.ContainsKey(key))
{
nameNodes = new List<NameNode>();
TypesMembers.Add(key, nameNodes);
}
else
nameNodes = TypesMembers[key];
_currentMembers.Push(new Tuple<string, List<NameNode>, CSharpTokenNode>(typeDeclaration.Name, nameNodes,
(CSharpTokenNode)typeDeclaration.Children.Last()));
base.VisitTypeDeclaration(typeDeclaration);
}