* <p>draw_Sylvan_Library.</p>
     *
     * @param player a {@link forge.Player} object.
     */
    private static void draw_Sylvan_Library(final Player player) {
        /*
		 * At the beginning of your draw step, you may draw two additional
		 * cards. If you do, choose two cards in your hand drawn this turn.
		 * For each of those cards, pay 4 life or put the card on top of
		 * your library.
		 */
        final CardList cards = AllZoneUtil.getPlayerCardsInPlay(player, "Sylvan Library");

        for (final Card source : cards) {
            final Ability ability = new Ability(source, "") {
                @Override
                public void resolve() {
                    final Player player = source.getController();
                    if (player.isHuman()) {
                        String question = "Draw 2 additional cards?";
                        final String cardQuestion = "Pay 4 life and keep in hand?";
                        if (GameActionUtil.showYesNoDialog(source, question)) {
                            player.drawCards(2);
                            for (int i = 0; i < 2; i++) {
                                final String prompt = source + " - Select a card drawn this turn: " + (2 - i) + " of 2";
                                AllZone.getInputControl().setInput(new Input() {
                                    private static final long serialVersionUID = -3389565833121544797L;

                                    @Override
                                    public void showMessage() {
                                        if (AllZone.getHumanHand().size() == 0) stop();
                                        AllZone.getDisplay().showMessage(prompt);
                                        ButtonUtil.disableAll();
                                    }

                                    @Override
                                    public void selectCard(Card card, PlayerZone zone) {
                                        if (zone.is(Constant.Zone.Hand) && true == card.getDrawnThisTurn()) {
                                            if (player.canPayLife(4) && GameActionUtil.showYesNoDialog(source, cardQuestion)) {
                                                player.payLife(4, source);
                                                //card stays in hand
                                            } else {
                                                AllZone.getGameAction().moveToLibrary(card);
                                            }
                                            stop();
                                        }
                                    }
                                });//end Input
                            }
                        }
                    } else {
                        //Computer, but he's too stupid to play this
                    }
                }//resolve
            };// Ability

            StringBuilder sb = new StringBuilder();
            sb.append("At the beginning of your draw step, you may draw two additional cards. If you do, choose two cards in your hand drawn this turn. For each of those cards, pay 4 life or put the card on top of your library.");
            ability.setStackDescription(sb.toString());

            AllZone.getStack().addSimultaneousStackEntry(ability);

        }//end for
    }