boolean isEven = isPlayerWinning && go.getBidType().equals(BidType.EVEN);
boolean isCanadian = isPlayerWinning && go.getBidType().equals(BidType.CANADIAN);
boolean isHardCore = cardsDealt > 3 && go.getBidType().equals(BidType.HARDCORE);
if(isEven || isCanadian || isHardCore) {
int bidSoFar = bid.bidSoFar();
if(cardsDealt - bidSoFar >= 0) {
notAllowedToBid = cardsDealt - bidSoFar;
// in canadian rules, zero is always allowed.
if(isCanadian && notAllowedToBid == 0 ) {
notAllowedToBid = -1;