/// <summary>
        /// Find appropriate books through books collection.
        /// </summary>
        /// <param name="parameter">Criteria.</param>
        /// <param name="books">Collection.</param>
        /// <returns>Appropriate books collection.</returns>
        public IEnumerable <Book> FindBooks(IFinder <Book> predicate, AbstractBookStorage books)
        {
            IList <Book> allBooksInStorage = Refresh(books);
            List <Book>  findedBooks       = new List <Book>();

            foreach (var book in allBooksInStorage)
            {
                if (predicate.BookIsRight(book))
                {
                    findedBooks.Add(book);
                }
            }
            if (findedBooks.Count == 0)
            {
                throw new BookNotExistsException("Error: we could't find book(s) with such criteria.");
            }
            return(findedBooks);
        }
 /// <summary>
 /// Refresh books local collection.
 /// </summary>
 /// <param name="books">Books to be saved.</param>
 /// <returns>Books collection.</returns>
 public IList <Book> Refresh(AbstractBookStorage books)
 {
     return(booksRepository.Refresh(books));
 }
 /// <summary>
 /// Constrictor.
 /// </summary>
 /// <param name="storage">Storage wich contain all books data.</param>
 public BookListService(AbstractBookStorage storage)
 {
     booksRepository = storage;
 }