protected void doScry(final CardList topN, final int N) {
        int num = N;
        for (int i = 0; i < num; i++) {
            Object o = GuiUtils.getChoiceOptional("Put on bottom of library.", topN.toArray());
            if (o != null) {
                Card c = (Card) o;
                topN.remove(c);
                AllZone.getGameAction().moveToBottomOfLibrary(c);
            } else // no card chosen for the bottom
                break;
        }
        num = topN.size();
        for (int i = 0; i < num; i++) {
            Object o;
            o = GuiUtils.getChoice("Put on top of library.", topN.toArray());
            if (o != null) {
                Card c = (Card) o;
                topN.remove(c);
                AllZone.getGameAction().moveToLibrary(c);
            }
            // no else - a card must have been chosen
        }
    }