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);
        }