public Order When(PaymentRecieved @event) => this;
 public static ICommand When(PaymentRecieved @event, Order state) => Ship(state);
 public static ICommand When(PaymentRecieved @event) => new CompletePayment();