CardsImpl cards = new CardsImpl();
int amount = Math.min(amountCards.calculate(game, source, this), player.getLibrary().size());
for (int i = 0; i < amount; i++) {
cards.add(player.getLibrary().removeFromTop(game));
}
player.revealCards(new StringBuilder("Put ").append(filter.getMessage()).append(" into hand").toString(), cards, game);
Set<Card> cardsList = cards.getCards(game);
for (Card card : cardsList) {
if (filter.match(card, game)) {
player.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY);