+ /* Unlock the provided mutex (the simcall observer ensures that one is provided, no need to check) */
+ auto* owner = mutex->get_owner();
+ xbt_assert(owner == issuer,
+ "Actor %s cannot wait on ConditionVariable %p since it does not own the provided mutex %p (which is "
+ "owned by %s).",
+ issuer->get_cname(), this, mutex, (owner == nullptr ? "nobody" : owner->get_cname()));
+ mutex_ = mutex;
+ mutex->unlock(issuer);
+
+ SynchroImplPtr synchro(new SynchroImpl([this, issuer]() {