public abstract Money calculateTotalAmountToPay(Event event, DateTime when, boolean applyDiscount);
public Money calculateTotalAmountToPay(Event event, DateTime when) { return calculateTotalAmountToPay(event, when, true); }
    public abstract Money calculateTotalAmountToPay(Event event, DateTime when, boolean applyDiscount);