private String counterStackDescription(AbilityFactory af, SpellAbility sa) {

        StringBuilder sb = new StringBuilder();

        if (!(sa instanceof Ability_Sub))
            sb.append(sa.getSourceCard().getName()).append(" - ");
        else
            sb.append(" ");

        ArrayList<SpellAbility> sas;

        Target tgt = af.getAbTgt();
        if (tgt != null)
            sas = tgt.getTargetSAs();
        else
            sas = AbilityFactory.getDefinedSpellAbilities(sa.getSourceCard(), params.get("Defined"), sa);

        sb.append("countering");

        boolean isAbility = false;
        for (final SpellAbility tgtSA : sas) {
            sb.append(" ");
            sb.append(tgtSA.getSourceCard());
            isAbility = tgtSA.isAbility();
            if (isAbility) sb.append("'s ability");
        }

        if (isAbility && params.containsKey("DestroyPermanent")) {
            sb.append(" and destroy it");
        }

        sb.append(".");

        Ability_Sub abSub = sa.getSubAbility();
        if (abSub != null) {
            sb.append(abSub.getStackDescription());
        }

        return sb.toString();
    }//end counterStackDescription