List <SearcherItem> SearcherItemsForType(int recursiveDepth, ITypeMetadata currentType, string currentPath, int parentsHashCode, BindingFlags flags) { List <SearcherItem> searcherItems = null; foreach (var member in currentType.GetMembers(flags)) { var childItem = SearcherItemForType(recursiveDepth, currentPath, parentsHashCode, member); searcherItems = searcherItems ?? new List <SearcherItem>(); searcherItems.Add(childItem); } return(searcherItems); }