public void Try(Action<ModelState> stateTransitionAction) { var modelStateTransition = new Transition<ModelState>(this, stateTransitionAction); modelStateTransition.Apply(); var unsatisfiedModelPropertyConstraints = _modelStateConstraints.GetModelPropertyConstraintsNotSatisfiedBy(this); if (unsatisfiedModelPropertyConstraints.Any()) { modelStateTransition.Rollback(); throw new UnsatisfiedModelConstraintsException(unsatisfiedModelPropertyConstraints); } }