if (opponent != null && you != null) {
Cards cardsInHand = new CardsImpl(Zone.PICK);
cardsInHand.addAll(opponent.getHand());
opponent.revealCards("Opponents hand", cardsInHand, game);
if (cardsInHand.size() > 0
&& cardsInHand.getCards(new FilterNonlandCard(), game).size() > 0) {
TargetCard target = new TargetCard(1, Zone.PICK, new FilterNonlandCard());
if (you.chooseTarget(Outcome.PlayForFree, cardsInHand, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
you.cast(card.getSpellAbility(), game, true);
}