public static void manaReflectedResolve(Ability_Mana abMana, AbilityFactory af) {
        // Spells are not undoable
        HashMap<String, String> params = af.getMapParams();
        abMana.setUndoable(af.isAbility() && abMana.isUndoable());

        Card card = af.getHostCard();

        ArrayList<String> colors = reflectableMana(abMana, af, new ArrayList<String>(), new ArrayList<Card>());

        ArrayList<Player> tgtPlayers;

        Target tgt = af.getAbTgt();
        if (tgt != null)
            tgtPlayers = tgt.getTargetPlayers();
        else
            tgtPlayers = AbilityFactory.getDefinedPlayers(abMana.getSourceCard(), params.get("Defined"), abMana);

        for (Player player : tgtPlayers) {
            String generated = generatedReflectedMana(abMana, af, colors, player);

            if (abMana.getCanceled()) {
                abMana.undo();
                return;
            }

            abMana.produceMana(generated, player);
        }

        doDrawback(af, abMana, card);
    }