if (player != null && foundCardsToPick > 0) {
if (!optional || player.chooseUse(Outcome.DrawCard, getMayText(), game)) {
FilterCard pickFilter = filter.copy();
pickFilter.setMessage(getPickText());
TargetCard target = new TargetCard((upTo ? 0:numberToPick.calculate(game, source, this)),numberToPick.calculate(game, source, this), Zone.PICK, pickFilter);
if (player.choose(Outcome.DrawCard, cards, target, game)) {
Cards reveal = new CardsImpl();
for (UUID cardId : (List<UUID>)target.getTargets()) {
Card card = cards.get(cardId, game);
if (card != null) {
cards.remove(card);