private CollectionMenuModel FindOrCreateCollection(CollectionMenuModel model, string[] fragments)
        {
            var childModel = (CollectionMenuModel) model.Children.FirstOrDefault(child => child.Name == fragments[0]);

            if (childModel == null)
            {
                childModel = new FolderMenuModel(fragments[0], null, fragments[0]);
                model.AddModel(childModel);
            }

            if (fragments.Length > 1)
            {
                var fragmentsLessOne = new string[fragments.Length - 1];
                Array.ConstrainedCopy(fragments, 1, fragmentsLessOne, 0, fragmentsLessOne.Length);
                return FindOrCreateCollection(childModel, fragmentsLessOne);
            }

            return childModel;
        }
        private CollectionMenuModel FindOrCreateCollection(CollectionMenuModel model, string path)
        {
            string[] parts = path.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);

            return FindOrCreateCollection(model, parts);
        }