private void When(Events.V1.TransactionDetailAssignedToTransactionDomainEvent @event) =>
 With(this, state =>
 {
     var detailState = PaymentTransactionDetail.Create(this.Id, @event.Description);
     detailState.ApplyEvent(@event);
     state._paymentTransactionDetails.Add(detailState);
 });
 public void RestoreSnapshot(object snapshotState) =>
 With(this, state =>
 {
     var snapshot = (PaymentTransactionSnapshot)snapshotState;
     state.Id     = snapshot.Id;
     state._transactionDateTime         = snapshot.TransactionDateTime;
     state._merchantTransactionDateTime = snapshot.MerchantTransactionDateTime;
     state._msisdn      = snapshot.Msisdn;
     state._description = snapshot.Description;
     state._orderId     = snapshot.OrderId;
     state._money       = Money.Create(Convert.ToDecimal(snapshot.Amount), 0);
     state._paymentTransactionDetails = snapshot.PaymentTransactionDetails.Select(d =>
     {
         var detail = PaymentTransactionDetail.Create(Guid.Parse(d.PaymentTransactionStateId), d.Description);
         return(detail);
     }).ToList();
 });