@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller == null) { return false; } // take cards from library and look at them boolean topCardRevealed = controller.isTopCardRevealed(); controller.setTopCardRevealed(false); Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, this.numberOfCards.calculate(game, source, this))); controller.lookAtCards(source, null, cards, game); this.actionWithSelectedCards(cards, game, source); this.putCardsBack(source, controller, cards, game); controller.setTopCardRevealed(topCardRevealed); this.mayShuffle(controller, source, game); return true; }