player.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY);
} else {
cards.add(card);
}
}
} while (library.size() > 0 && card != null && !filter.match(card, game));
if (!cards.isEmpty()) {
for (Card cardToGrave: cards.getCards(game)) {
player.moveCardToGraveyardWithInfo(cardToGrave, source.getSourceId(), game, Zone.LIBRARY);
}