private static boolean untapTrigger(AbilityFactory af, SpellAbility sa, boolean mandatory) {
        HashMap<String, String> params = af.getMapParams();
        if (!ComputerUtil.canPayCost(sa))
            return false;

        Target tgt = sa.getTarget();

        if (tgt == null) {
            if (mandatory)
                return true;

            // TODO: use Defined to determine, if this is an unfavorable result
            ArrayList<Card> pDefined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa);
            if (pDefined != null && pDefined.get(0).isUntapped())
                return false;

            return true;
        } else {
            if (untapPrefTargeting(tgt, af, sa, mandatory)) {
                return true;
            } else if (mandatory) {
                // not enough preferred targets, but mandatory so keep going:
                return untapUnpreferredTargeting(af, sa, mandatory);
            }
        }

        return false;
    }