private static void upkeep_Masticore() {
        final Player player = AllZone.getPhase().getPlayerTurn();

        CardList list = AllZoneUtil.getPlayerCardsInPlay(player, "Masticore");
        list.addAll(AllZoneUtil.getPlayerCardsInPlay(player, "Molten-Tail Masticore"));
        list.addAll(AllZoneUtil.getPlayerCardsInPlay(player, "Razormane Masticore"));

        Ability ability;
        for (int i = 0; i < list.size(); i++) {
            final Card crd = list.get(i);

            final Input discard = new Input() {
                private static final long serialVersionUID = 2252076866782738069L;

                @Override
                public void showMessage() {
                    AllZone.getDisplay().showMessage(crd + " - Discard a card from your hand");
                    ButtonUtil.enableOnlyCancel();
                }

                @Override
                public void selectCard(Card c, PlayerZone zone) {
                    if (zone.is(Constant.Zone.Hand)) {
                        c.getController().discard(c, null);
                        stop();
                    }
                }

                @Override
                public void selectButtonCancel() {
                    AllZone.getGameAction().sacrifice(crd);
                    stop();
                }
            };//Input

            ability = new Ability(crd, "0") {
                @Override
                public void resolve() {
                    if (crd.getController().isHuman()) {
                        if (AllZone.getHumanHand().size() == 0) AllZone.getGameAction().sacrifice(crd);
                        else AllZone.getInputControl().setInput(discard);
                    } else //comp
                    {
                        CardList list = AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer());

                        if (list.size() != 0) list.get(0).getController().discard(list.get(0), this);
                        else AllZone.getGameAction().sacrifice(crd);
                    }//else
                }//resolve()
            };//Ability

            StringBuilder sb = new StringBuilder();
            sb.append(crd).append(" - sacrifice ").append(crd).append(" unless you discard a card.");
            ability.setStackDescription(sb.toString());
            ability.setDescription(sb.toString());

            AllZone.getStack().addSimultaneousStackEntry(ability);

        }// for
    }