/// <summary>
        /// Searchs books by criteria.
        /// </summary>
        /// <param name="criteria">Object inherited from ICompareWithCriteria interface.</param>
        /// <returns>List of Book objects selected by criteria.</returns>
        public IEnumerable <Book> SearchElementByTag(ICompareWithCriteria <Book> criteria)
        {
            List <Book> selectedBooks = new List <Book>();

            foreach (var book in storage)
            {
                if (criteria.Compare(book))
                {
                    yield return(book);
                }
            }
        }
        public Book SearchFirstElementByTag(ICompareWithCriteria <Book> criteria)
        {
            List <Book> selectedBooks = new List <Book>();

            foreach (var book in storage)
            {
                if (criteria.Compare(book))
                {
                    return(book);
                }
            }
            return(null);
        }