newState = new State(StateName.RUN, currState._pendingCount + 1);
} while (!_stateRef.compareAndSet(currState, newState));
final long planId = NEXT_PLAN_ID.getAndIncrement();
final Logger planLogger = _loggerFactory.getLogger(LOGGER_BASE + ":planClass=" + task.getClass().getName());
final TaskLogger taskLogger = new TaskLogger(task, _allLogger, _rootLogger, planLogger);
final Executor taskExecutor = new SerialExecutor(_taskExecutor, new CancelPlanRejectionHandler(task));
new ContextImpl(new PlanContext(planId, this, taskExecutor, _timerExecutor, taskLogger), task).runTask();
InternalUtil.unwildcardTask(task).addListener(_taskDoneListener);
}