void ISourceProviderListener::Events::RemoveListener(ISourceProviderListener* l)
{
  if (l == 0) return;

  multipleSourcesChanged -= Delegate2(l, &ISourceProviderListener::SourceChanged);
  singleSourceChanged -= Delegate3(l, &ISourceProviderListener::SourceChanged);
}
void ISourceProviderListener::Events::AddListener(ISourceProviderListener::Pointer l)
{
  if (l == 0) return;

  multipleSourcesChanged += Delegate2(l.GetPointer(), &ISourceProviderListener::SourceChanged);
  singleSourceChanged += Delegate3(l.GetPointer(), &ISourceProviderListener::SourceChanged);
}