public static OrderState.Result CancelOrder(OrderState state) =>
 state.ApplyEvent(new OrderCancelledEvent(state.Id));
 public static OrderState.Result AddOrderItem(OrderState state, OrderItemId itemId, ProductId productId,
                                              decimal unitPrice, decimal discount) =>
 state.ApplyEvent(new OrderItemAddedEvent(itemId, state.Id, productId, unitPrice, discount));
 public static OrderState.Result PayOrder(OrderState state) =>
 state.ApplyEvent(new OrderPaidEvent(state.Id));