private AccountState ApplyEvent(ObligationAssessedConcept occurred)
        {
            if (!Obligations.ContainsKey(occurred.ObligationNumber))
            {
                Console.WriteLine(
                    $"Account {AccountNumber} does not contain obligation {occurred.ObligationNumber}. No Action Taken.");
                throw new Exception(
                          $"Account {AccountNumber} does not contain obligation {occurred.ObligationNumber}. No Action Taken.");
            }

            var trans = new FinancialTransaction(occurred.FinancialBucket, occurred.FinancialBucket.Amount);

            Obligations[occurred.ObligationNumber].PostTransaction(trans);
            var newBalance = CurrentBalance + decimal.Parse(occurred.FinancialBucket.Amount.ToString());
            var newState   = new AccountState(
                AccountNumber,
                newBalance,
                AccountStatus,
                Obligations,
                SimulatedFields,
                AuditLog.Add(
                    new StateLog(
                        "ObligationAssessedConcept",
                        occurred.Message + " Balance After: " + ((decimal)newBalance).ToString("C"),
                        occurred.UniqueGuid(),
                        occurred.OccurredOn())
                    ),
                OpeningBalance,
                Inventroy,
                UserName,
                LastPaymentAmount,
                LastPaymentDate);

            return(newState);
        }