protected void DoTransition(IRule rule) { if (rule == null) { state = GetNextState(state, ""); } else { DoUnitOfWork(rule.GetUnitOfWork(context)); state = GetNextState(state, rule.name); } }