public List <TreeNavigationItem> GetChildren(NavigationContext navigationContext, TreeNavigationItem parentTreeNavigationItem)
        {
            List <TreeNavigationItem> children = new List <TreeNavigationItem>();

            switch (parentTreeNavigationItem.Type)
            {
            case NavigationType.PROJECT:
                children.AddRange(_folderNavigationRepository.FindRoots(parentTreeNavigationItem.Id));
                break;

            case NavigationType.FOLDER:
                if (parentTreeNavigationItem.Name == "PrimitiveTypes")
                {
                    children.AddRange(_folderNavigationRepository.FindChildren(parentTreeNavigationItem.Id));
                    children.AddRange(_primitiveTypeNavigationRepository.FindChildren(parentTreeNavigationItem.Id));
                }
                else
                {
                    children.AddRange(_folderNavigationRepository.FindChildren(parentTreeNavigationItem.Id));
                    children.AddRange(_compositeTypeNavigationRepository.FindChildren(parentTreeNavigationItem.Id));
                }
                break;

            case NavigationType.COMPOSITE_TYPE:
                children.AddRange(_compositeTypeElementNavigationRepository.FindChildren(parentTreeNavigationItem.Id));
                break;
            }
            ExtendTreeNavigationItems(children, parentTreeNavigationItem);
            return(children);
        }