public static RubyConditionVariable/*!*/ Wait(RubyConditionVariable/*!*/ self, [NotNull]RubyMutex/*!*/ mutex) {
self._mutex = mutex;
RubyMutex.Unlock(mutex);
lock (self._lock) { self._waits++; }
self._signal.WaitOne();
lock (self._lock) { self._waits--; }
RubyMutex.Lock(mutex);
return self;
}