public LoanAgreement
        (
            EconomicEvent economicEvent,
            FinancierId financierId,
            LoanAmount loanAmount,
            InterestRate interestRate,
            LoanDate loanDate,
            MaturityDate maturityDate,
            PaymentsPerYear paymentsPerYear,
            UserId userID
        )
        {
            EconomicEvent   = economicEvent ?? throw new ArgumentNullException("The economic event is required.");
            Id              = economicEvent.Id;
            FinancierId     = financierId;
            LoanAmount      = loanAmount ?? throw new ArgumentNullException("The loan amount for this loan agreement is required.");
            InterestRate    = interestRate ?? throw new ArgumentNullException("The interest rate is required; if zero then pass in 0.");
            LoanDate        = loanDate ?? throw new ArgumentNullException("The loan agreement date is required.");
            MaturityDate    = maturityDate ?? throw new ArgumentNullException("The loan maturity date is required.");
            PaymentsPerYear = paymentsPerYear ?? throw new ArgumentNullException("The number of loan payments per year is required.");
            UserId          = userID ?? throw new ArgumentNullException("The id of the employee recording this loan agreement is required.");

            CheckValidity();
        }
 public void UpdatePaymentsPerYear(PaymentsPerYear value)
 {
     PaymentsPerYear = value ?? throw new ArgumentNullException("The number of loan payments per year is required.");
     UpdateLastModifiedDate();
     CheckValidity();
 }