public static bool Wait (object obj, int millisecondsTimeout)
{
if (obj == null)
throw new ArgumentNullException ("obj");
if (millisecondsTimeout < Timeout.Infinite)
throw new ArgumentOutOfRangeException ("millisecondsTimeout", "timeout out of range");
if (!Monitor_test_synchronised (obj))
throw new SynchronizationLockException ("Object is not synchronized");
return Monitor_wait (obj, millisecondsTimeout);
}