@Override
 public boolean apply(Game game, Ability source) {
   FilterCard protectionFilter = (FilterCard) ((ProtectionAbility) ability).getFilter();
   protectionFilter.add(new ColorPredicate(choice.getColor()));
   protectionFilter.setMessage(choice.getChoice());
   ((ProtectionAbility) ability).setFilter(protectionFilter);
   return super.apply(game, source);
 }
 @Override
 public boolean apply(Game game, Ability source) {
   Permanent creature = game.getPermanent(getTargetPointer().getFirst(game, source));
   if (creature != null) {
     FilterCard protectionFilter = (FilterCard) ((ProtectionAbility) ability).getFilter();
     protectionFilter.add(new ColorPredicate(choice.getColor()));
     protectionFilter.setMessage(choice.getChoice());
     ((ProtectionAbility) ability).setFilter(protectionFilter);
     creature.addAbility(ability, source.getSourceId(), game);
     return true;
   }
   return false;
 }