+ if (next < 0) {
+ // If there is no more transition in the current state ), backtrace
+ XBT_VERB("%lu actors remain, but none of them need to be interleaved (depth %zu).", state->get_actor_count(),
+ stack_.size() + 1);
+
+ if (state->get_actor_count() == 0) {
+ get_remote_app().finalize_app();
+ XBT_VERB("Execution came to an end at %s (state: %ld, depth: %zu)", get_record_trace().to_string().c_str(),
+ state->get_num(), stack_.size());
+ }
+
+ this->backtrack();
+ continue;
+ }
+ if (not state->is_actor_enabled(next)) {
+ // if ODPOR picked an actor that is not enabled -- ReversibleRace is an overapproximation
+ xbt_assert(reduction_mode_ == ReductionMode::odpor,
+ "Only ODPOR should be fool enough to try to execute a disabled transition");
+ XBT_VERB("Preventing ODPOR exploration from executing a disabled transition. The reversibility of the race "
+ "must have been overapproximated");
+
+ state->remove_subtree_at_aid(next);
+ state->add_sleep_set(state->get_actors_list().at(next).get_transition());