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