private static void ParseNamespace(DocumentData parent, INamespaceSymbol symbol, string rootName, IEnumerable <string> namespacesBegins, int namespaceIndex, string id) { var data = parent.GetNamespace(symbol); if (data == null) { data = CreateDocumentData <NamespaceDocumentData>(symbol, rootName, id); parent.AddNamespace(data); } else { data.SupportedProjects.Add(id); } // Namespaces var namespaces = symbol.GetNamespaceMembers(); foreach (var namespaceSymbol in namespaces) { if (namespacesBegins == null || namespacesBegins.Count() == 0 || namespacesBegins.Any(n => ValidNamespace(namespaceIndex, namespaceSymbol, n))) { ParseNamespace(parent, namespaceSymbol, data.Name, namespacesBegins, namespaceIndex + 1, id); } } if (namespacesBegins == null || namespacesBegins.Count() == 0 || namespacesBegins.Any(n => ValidNamespace(namespaceIndex, symbol, n))) { // Types var typeMembers = symbol.GetTypeMembers(); foreach (var typeMember in typeMembers) { ParseTypeMember(data, typeMember, data.FullName, id); } } }