public void Apply(Rating rating)
        {
            try
            {
                var adjustedAmount = rating.ApplyTo(amount);
                var difference = adjustedAmount - amount;
                amount = adjustedAmount;

                ApplyEvent(new RatingApplied(rating.GetType().Name, adjustedAmount, difference));
            }
            catch (DeclinedException exception)
            {
                ApplyEvent(new Declined(exception.Reason));
            }
        }