private static String generatedReflectedMana(Ability_Mana abMana, AbilityFactory af, ArrayList<String> colors, Player player) {
        // Calculate generated mana here for stack description and resolving
        HashMap<String, String> params = af.getMapParams();
        int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), abMana) : 1;

        String baseMana = "";

        if (colors.size() == 0)
            return "0";
        else if (colors.size() == 1)
            baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0));
        else {
            if (player.isHuman()) {
                Object o = GuiUtils.getChoiceOptional("Select Mana to Produce", colors.toArray());
                if (o == null) {
                    // User hit cancel
                    abMana.setCanceled(true);
                    return "";
                } else {
                    baseMana = Input_PayManaCostUtil.getShortColorString((String) o);
                }
            } else {
                // AI doesn't really have anything here yet
                baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0));
            }
        }

        StringBuilder sb = new StringBuilder();
        if (amount == 0)
            sb.append("0");
        else {
            try {
                // if baseMana is an integer(colorless), just multiply amount and baseMana
                int base = Integer.parseInt(baseMana);
                sb.append(base * amount);
            } catch (NumberFormatException e) {
                for (int i = 0; i < amount; i++) {
                    if (i != 0)
                        sb.append(" ");
                    sb.append(baseMana);
                }
            }
        }
        return sb.toString();
    }