internal void Remove(AMCHandler aMCHandler, String what)
 {
     lock (_messages)
     {
         bool removed = false;
         for (int i = 0; i < _messages.Count; i++)
         {
             if (_messages[i].GetTarget().Equals(aMCHandler)
                 && _messages[i].what.Equals(what))
             {
                 _messages.RemoveAt(i);
                 removed = true;
             }
         }
         if (removed)
         {
             Monitor.PulseAll(_messages);
         }
     }
 }
 internal bool Has(AMCHandler aMCHandler, String what)
 {
     lock (_messages)
     {
         for (int i = 0; i < _messages.Count; i++)
         {
             if (_messages[i].GetTarget().Equals(aMCHandler)
                 && _messages[i].what.Equals(what))
             {
                 return true;
             }
         }
     }
     return false;
 }
 internal void Remove(AMCHandler aMCHandler, Delegate runnable)
 {
     lock (_messages)
     {
         for (int i = 0; i < _messages.Count; i++)
         {
             if (_messages[i].GetTarget().Equals(aMCHandler)
                 && _messages[i].Runnable.Equals(runnable))
             {
                 _messages.RemoveAt(i);
             }
         }
     }
 }
 public void SetTarget(AMCHandler h)
 {
     _target = h;
 }