@Override
  protected void onPerform() {
    CostComponent<?> cost = card.getModel().getComponent(CostComponent.class);
    if (cost != null) cost.perform(card);

    EffectComponent effect = card.getModel().getComponent(EffectComponent.class);
    if (effect != null) effect.getEffect().performEffect(card);
  }
 @Override
 public boolean actionIsAllowed() {
   CostComponent<?> cost = card.getModel().getComponent(CostComponent.class);
   return cost != null ? cost.test(card) : true;
 }