private void InteractWith(Bookshelf bookshelf) { Utility.Execute(booksToTake, bookshelf.ContainBook, book => { BookModel bookModel = bookshelf.books.Find(b => b.book == book); if (bookshelf.TransferBook(this, bookModel)) { booksToTake.Remove(bookModel.book); } else { Debug.Log( $"Could not transfer book '{book.Title}' to player because already transporting max book count"); } }); Utility.Execute(booksToStore, bookshelf.ShouldStoreBookIn, b => { if (!TransferBook(bookshelf, b)) { Debug.Log( $"Could not transfer book '{b.book.Title}' to {bookshelf.name} because already containing max book count"); } booksToStore.Remove(b); }); }