private void Test(MonitorBasedDeveloper developer) { lock (typeof(Developer)) { if (developer.Left.State != DeveloperState.Coding && developer.State == DeveloperState.Waiting && developer.Right.State != DeveloperState.Coding) { lock (developer) { developer.SetState(DeveloperState.Coding); Monitor.Pulse(developer); } } } }