/// <summary>
 /// Called by
 /// <see cref="TestingThread"/>
 /// s to signal
 /// a successful completion.
 /// </summary>
 /// <param name="t">the thread that finished.</param>
 public virtual void ThreadDone(MultithreadedTestUtil.TestingThread t)
 {
     lock (this)
     {
         finishedThreads.AddItem(t);
         Runtime.Notify(this);
     }
 }
 /// <summary>Add a thread to the context for running.</summary>
 /// <remarks>
 /// Add a thread to the context for running.
 /// Threads can be of type
 /// <see cref="TestingThread"/>
 /// or
 /// <see cref="RepeatingTestThread"/>
 /// or other custom derivatives of the former.
 /// </remarks>
 /// <param name="t">the thread to add for running.</param>
 public virtual void AddThread(MultithreadedTestUtil.TestingThread t)
 {
     testThreads.AddItem(t);
 }