/// <summary>
        ///		Clona una colección de entradas
        /// </summary>
        public EntryModelCollection Clone()
        {
            EntryModelCollection entries = new EntryModelCollection();

            // Clona la colección
            foreach (EntryModel entry in this)
            {
                entries.Add(entry.Clone());
            }
            // Devuelve la colección clonada
            return(entries);
        }
        /// <summary>
        ///		Mezcla una colección de entradas
        /// </summary>
        public EntryModelCollection Merge(EntryModelCollection entriesNew)
        {
            EntryModelCollection entriesMerged = new EntryModelCollection();

            // Mezcla las entradas
            foreach (EntryModel entryNew in entriesNew)
            {
                if (Search(entryNew.Id, entryNew.Title) == null)
                {
                    // Añade la entrada
                    Add(entryNew);
                    // Añade la entrada a la colección de entradas añadidas
                    entriesMerged.Add(entryNew);
                }
            }
            // Devuelve la colección de entradas mezcladas
            return(entriesMerged);
        }
        /// <summary>
        ///		Mezcla una colección de categorías
        /// </summary>
        public CategoryModelCollection Merge(TrackModel track, CategoryModelCollection categoriesNew)
        {
            CategoryModelCollection categoriesMerged = new CategoryModelCollection();

            // Mezcla las categorías
            foreach (CategoryModel categoryNew in categoriesNew)
            {
                CategoryModel categoryFound = Search(categoryNew.Id, categoryNew.Title);

                if (categoryFound == null)
                {
                    // Añade la categoría a la colección (indicando que está cargada)
                    categoryNew.IsLoaded = true;
                    Add(categoryNew.Clone(track));
                    // Añade la categoría a las categorías mezcladas
                    categoriesMerged.Add(categoryNew.Clone(track));
                }
                else
                {
                    EntryModelCollection entriesMerged = categoryFound.Entries.Merge(categoryNew.Entries);

                    // Si se han encontrado entradas nuevas, se añade a la lista de categorías mezcladas
                    if (entriesMerged.Count > 0)
                    {
                        CategoryModel categoryMerged = categoryFound.Clone(track);

                        // Limpia las entradas
                        categoryMerged.Entries.Clear();
                        // Añade sólo las entradas mezcladas
                        categoryMerged.Entries.AddRange(entriesMerged);
                        // y añade la categoría a la lista
                        categoriesMerged.Add(categoryMerged);
                    }
                }
            }
            // Devuelve la categorías en las que ha habido algún cambio
            return(categoriesMerged);
        }