Log.log(Log.DEBUG,this,"AWT immediate: " + run);
	public void addWorkRequest(Runnable run, boolean inAWT)	{		if(threads == null)		{			run.run();			return;		}		// if inAWT is set and there are no requests		// pending, execute it immediately		if(inAWT && requestCount == 0 && awtRequestCount == 0)		{			Log.log(Log.DEBUG,this,"AWT immediate: " + run);			if(SwingUtilities.isEventDispatchThread())				run.run();			else				SwingUtilities.invokeLater(run);			return;		}		Request request = new Request(run);		synchronized(lock)		{			if(inAWT)			{				if(firstAWTRequest == null && lastAWTRequest == null)					firstAWTRequest = lastAWTRequest = request;				else				{					lastAWTRequest.next = request;					lastAWTRequest = request;				}				awtRequestCount++;				// if no requests are running, requestDone()				// will not be called, so we must queue the				// AWT runner ourselves.				if(requestCount == 0)					queueAWTRunner();			}			else			{				if(firstRequest == null && lastRequest == null)					firstRequest = lastRequest = request;				else				{					lastRequest.next = request;					lastRequest = request;				}				requestCount++;			}			lock.notify();		}	}