private static String protectAllStackDescription(AbilityFactory af, SpellAbility sa) {
    	HashMap<String,String> params = af.getMapParams();
    	Card host = af.getHostCard();

    	StringBuilder sb = new StringBuilder();

    	ArrayList<Card> tgtCards;
    	Target tgt = af.getAbTgt();
    	if(tgt != null)
    		tgtCards = tgt.getTargetCards();
    	else
    		tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa);

    	if(tgtCards.size() > 0) {

    		if(sa instanceof Ability_Sub)
    			sb.append(" ");
    		else
    			sb.append(host).append(" - ");

            if (params.containsKey("SpellDescription")) {
                sb.append(params.get("SpellDescription"));
            } else {
                sb.append("Valid card gain protection");
                if(!params.containsKey("Permanent"))
        			sb.append(" until end of turn");
                sb.append(".");
            }
    	}

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

    	return sb.toString();
    }//protectStackDescription()