public static PlayerAction Player(Card card, 
     string playerName = null,
     int cardCount = 1,
     int afterSilverCount = 0,
     int countGoldBeforeProvince = 3,
     int countRemainingProvinceBeforeDuchy = 4,
     int countRemainingProvinceBeforeEstateOverGold = 1,
     int countRemainingProvinceBeforeEstateOverSilver = 3,
     int afterGoldCount = int.MaxValue,
     bool enablePenultimateProvinceRule = false)
 {
     return new PlayerAction(
                 playerName == null ? "BigMoney" + card.GetType().Name : playerName,
                 purchaseOrder: PurchaseOrder(
                     card,
                     cardCount,
                     afterSilverCount,
                     afterGoldCount == int.MaxValue && card.DefaultCoinCost >= Cards.Gold.DefaultCoinCost ? 0 : afterGoldCount,
                     countGoldBeforeProvince,
                     countRemainingProvinceBeforeDuchy,
                     countRemainingProvinceBeforeEstateOverGold,
                     countRemainingProvinceBeforeEstateOverSilver),
                 actionOrder:ActionOrder(card),
                 enablePenultimateProvinceRule:enablePenultimateProvinceRule);
 }
 // big money smithy player
 public static PlayerAction Player(Card card, int playerNumber, string playerName = null, int cardCount = 1, int afterSilverCount = 0, int afterGoldCount = int.MaxValue)
 {
     return new PlayerAction(
                 playerName == null ? "BigMoneyWithCard<" + card.GetType().Name + ">" : playerName,
                 playerNumber,
                 purchaseOrder: PurchaseOrder(card, cardCount, afterSilverCount, afterGoldCount));
 }