private BankAccount(BankAccountSnapshot bankAccountSnapshot, IEnumerable <DomainEvent> storedDomainEvents) : base(bankAccountSnapshot.AggregateId)
 {
     DomainEventVersion = bankAccountSnapshot.Version;
     StoredEventVersion = bankAccountSnapshot.Version;
     Balance            = Balance.Create(bankAccountSnapshot.Balance);
     foreach (DomainEvent @event in storedDomainEvents)
     {
         Apply(@event);
         StoredEventVersion++;
     }
 }
 public static BankAccount ReconstructBankAccount(BankAccountSnapshot bankAccountSnapshot,
                                                  IEnumerable <DomainEvent> storedDomainEvents)
 {
     return(new BankAccount(bankAccountSnapshot, storedDomainEvents));
 }