private void PopulateAssemblyTypes(List<StaticDeclaredTypeWrapper> types, INamespace namespaceHandle, IDeclarationsCache cache, bool includeNonPublicTypes) { if (namespaceHandle == null || ! namespaceHandle.IsValid()) return; foreach (IDeclaredElement elementHandle in namespaceHandle.GetNestedElements(cache)) { ITypeElement typeHandle = elementHandle as ITypeElement; if (typeHandle != null) { PopulateAssemblyTypes(types, typeHandle, includeNonPublicTypes); } else { INamespace nestedNamespace = elementHandle as INamespace; if (nestedNamespace != null) PopulateAssemblyTypes(types, nestedNamespace, cache, includeNonPublicTypes); } } }