internal virtual ActionResult Cancel() { // If Sale allows us to cancel, we take care of that here // -- This check could also go into the Open state var result = Sale.CancelInternal(); if (result.IsSuccess) { Sale.TransitionTo(new CancelledState(Sale)); } return(result); }