void ISourceProviderListener::Events::AddListener(ISourceProviderListener::Pointer l)
{
  if (l == 0) return;

  multipleSourcesChanged += Delegate2(l.GetPointer(), &ISourceProviderListener::SourceChanged);
  singleSourceChanged += Delegate3(l.GetPointer(), &ISourceProviderListener::SourceChanged);
}
void ISourceProviderListener::Events::RemoveListener(ISourceProviderListener* l)
{
  if (l == 0) return;

  multipleSourcesChanged -= Delegate2(l, &ISourceProviderListener::SourceChanged);
  singleSourceChanged -= Delegate3(l, &ISourceProviderListener::SourceChanged);
}
void
IWorkbenchListener::Events
::RemoveListener(IWorkbenchListener* listener)
{
  if (listener == NULL) return;

  preShutdown -= Delegate2(listener, &IWorkbenchListener::PreShutdown);
  postShutdown -= Delegate1(listener, &IWorkbenchListener::PostShutdown);
}